加入三张桌子

时间:2010-03-24 00:09:44

标签: php mysql

对于下面的连接查询,我想从名为“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";

1 个答案:

答案 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语法。你应该赞成这个。它通常更容易阅读。