-2

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

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

session.contact指向contact.pk。_ 并且message.sessionsession.pk.
session.contact为零时,则此行没有联系。contact.pk永远不会为零。

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

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

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

4

1 回答 1

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
于 2012-05-09T16:16:25.847 回答