-2

複雑なクエリがあり、正しい答えが得られません。
3 つのテーブルがあります。

contact ( pkは INT、nameは VARCHAR、...)
session ( pkは INT、contactは INT、...)
message ( pkは INT、sessionは INT、...)

へのsession.contactポイントcontact.pk。そしてmessage.sessionsession.pk。がゼロの場合、この行には連絡先がありません
。ゼロになることはありません。session.contactcontact.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 に答える