我的表格是这样设计的: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;