添加 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;