非常复杂的SQL查询

时间:2012-05-09 16:13:09

标签: mysql sql complexity-theory

我有一个复杂的查询,我无法得到正确的答案 有3个表:

联系 pk 为INT,名称为VARCHAR,...)
会话 pk 为INT,联系为INT,...)
消息 pk 为INT,会话为INT,...)

session.contact指向contact.pkmessage.sessionsession.pksession.contact为零时,此行没有联系人。 contact.pk永远不会为零。

现在我想获取特定消息的所有名称。我的尝试是这样的:

  

SELECT message.pk,contact.name FROM message,session,contact WHERE message.session = session.pk AND session.contact = contact.pk

但是我没有得到正确的返回行数。它应该是2459,有2075年。

1 个答案:

答案 0 :(得分:2)

首先,您如何知道这是正确的行数?

其次,您应该使用与下面类似的正确JOIN语法:

SELECT message.pk, contact.name
FROM message m
LEFT JOIN session s
    on m.session = s.pk
LEFT JOIN contact c
    on s.contact = c.pk