对于下面的连接查询,我想从名为“comment”的第三个MySQL表中提取一些数据。每个s.title都有一个相应的s.submissionid。字段“submissionid”也在表“评论”中。
对于“评论”表中的每个“提交者”,我想计算一个名为“commentid”的字段。
我该怎么做?
提前致谢,
约翰
$sqlStr = "SELECT s.loginid, s.title, s.url, s.displayurl, l.username
FROM submission AS s,
login AS l
WHERE s.loginid = l.loginid
ORDER BY s.datesubmitted DESC
LIMIT 10";
答案 0 :(得分:2)
是的,你可以做到,但你遇到的问题是,如果登录有多个提交,并且提交有多个评论,那么你的结果可能难以解释。
换句话说,如果你有10次登录,每次有5次提交,每次提交都有8条评论,你将要退回10 x 5 x 8 = 400行。现在你可以解决这个问题,但数据可能会失控。
那是:
SELECT s.loginid, s.title, s.url, s.displayurl, l.username, c.commentid
FROM submission s
JOIN login l ON s.loginid = l.loginid
LEFT JOIN comments c ON s.submissionid = c.submissionid
ORDER BY s.datesubmissed DESC
LIMIT 10
注意:我已将上述内容更改为使用ANSI SQL JOIN语法。你应该赞成这个。它通常更容易阅读。