我的表格设计如下:cours> modules> sections>部分我的意思是有课程,课程内有模块,内部模块有部分......
这是我的实际查询:
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;
我希望在添加的读取列中得到相同的结果,但事实并非如此,为什么?
答案 0 :(得分:1)
这是你要从reads
表中使用哪一行的问题。
通常情况下,聚合函数或某些嵌套子查询就是这种情况。
例如,如果您想从time
表中获取最大reads
,则需要添加GROUP BY
子句并应用从读取中检索最大值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;