添加 LEFT JOIN 添加结果或修改它们
Adding LEFT JOIN add results or modify them
我的表格是这样设计的:cours>modules>sections>parts 我的意思是有课程,课程里面有模块,模块里面有部分...
这是我的实际查询:
SELECT PG.idpage,PG.type
FROM pages PG
JOIN parts P ON P.idpart=PG.idpart
JOIN sections S ON S.idsection=P.idsection
JOIN modules M ON M.idmodule=S.idmodule
JOIN coursuser CU ON CU.idcours=M.idcours
WHERE PG.idpart='15' AND CU.iduser='1'
ORDER BY idpage;
我在尝试什么:
SELECT PG.idpage,PG.type,R.time
FROM pages PG
JOIN parts P ON P.idpart=PG.idpart
JOIN sections S ON S.idsection=P.idsection
JOIN modules M ON M.idmodule=S.idmodule
JOIN coursuser CU ON CU.idcours=M.idcours
LEFT JOIN reads R ON R.idpage=PG.idpage
WHERE PG.idpart='15' AND CU.iduser='1'
ORDER BY idpage;
我希望只添加读取的列就能得到相同的结果,但事实并非如此,为什么?
这是您要使用 reads
table 中的第一行的问题。
通常这是聚合函数或某些嵌套子查询的情况。
例如,如果您想从 reads
table 中获取最大值 time
,您需要添加一个 GROUP BY
子句并应用一个聚合函数来检索最大值 MAX(R.time)
来自阅读 table.
SELECT PG.idpage, PG.type, MAX(R.time) as time
FROM pages PG
JOIN parts P ON P.idpart=PG.idpart
JOIN sections S ON S.idsection=P.idsection
JOIN modules M ON M.idmodule=S.idmodule
JOIN coursuser CU ON CU.idcours=M.idcours
LEFT JOIN reads R ON R.idpage=PG.idpage
WHERE PG.idpart='15' AND CU.iduser='1'
GROUP BY PG.idpage, PG.type
ORDER BY idpage;
我的表格是这样设计的:cours>modules>sections>parts 我的意思是有课程,课程里面有模块,模块里面有部分...
这是我的实际查询:
SELECT PG.idpage,PG.type
FROM pages PG
JOIN parts P ON P.idpart=PG.idpart
JOIN sections S ON S.idsection=P.idsection
JOIN modules M ON M.idmodule=S.idmodule
JOIN coursuser CU ON CU.idcours=M.idcours
WHERE PG.idpart='15' AND CU.iduser='1'
ORDER BY idpage;
我在尝试什么:
SELECT PG.idpage,PG.type,R.time
FROM pages PG
JOIN parts P ON P.idpart=PG.idpart
JOIN sections S ON S.idsection=P.idsection
JOIN modules M ON M.idmodule=S.idmodule
JOIN coursuser CU ON CU.idcours=M.idcours
LEFT JOIN reads R ON R.idpage=PG.idpage
WHERE PG.idpart='15' AND CU.iduser='1'
ORDER BY idpage;
我希望只添加读取的列就能得到相同的结果,但事实并非如此,为什么?
这是您要使用 reads
table 中的第一行的问题。
通常这是聚合函数或某些嵌套子查询的情况。
例如,如果您想从 reads
table 中获取最大值 time
,您需要添加一个 GROUP BY
子句并应用一个聚合函数来检索最大值 MAX(R.time)
来自阅读 table.
SELECT PG.idpage, PG.type, MAX(R.time) as time
FROM pages PG
JOIN parts P ON P.idpart=PG.idpart
JOIN sections S ON S.idsection=P.idsection
JOIN modules M ON M.idmodule=S.idmodule
JOIN coursuser CU ON CU.idcours=M.idcours
LEFT JOIN reads R ON R.idpage=PG.idpage
WHERE PG.idpart='15' AND CU.iduser='1'
GROUP BY PG.idpage, PG.type
ORDER BY idpage;