添加左联接 添加结果或修改结果



我的表格是这样设计的:cours>modules>section>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。通常,聚合函数或某些嵌套子查询就是这种情况。

例如,如果要从表中获取最大time reads则需要添加一个GROUP BY子句并应用聚合函数从reads表中检索最大值MAX(R.time)

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;

最新更新