二つの主要な一つのリンクテーブル:MySQLは、クエリに参加します

主ベイダー:

私はユニのために働いていることをスターウォーズのプロジェクトを持っています。

私のデータベースでは、私は複数のテーブルとリンクテーブルを持っています。私は、クエリにしようとしています

「トランスポートのどのモードでは、レイ、オビ=ワン・ケノービとC-3POで使用されてきました?」

回答は、(明らかに)ミレニアム・ファルコンです。

私は、内部結合使用してクエリを設定しているが、私は最後にこだわっています。

SELECT t.type AS OnlyTransportItCouldBe 
FROM transport AS t
INNER JOIN person_transport AS pt
ON pt.transport_id = t.id
INNER JOIN person AS p
ON pt.person_id = p.id
WHERE p.name = 'Rey'

上記リターン3隻の船は、私はまた、旧ベンとアキノキリンソウをチェックする方法としてconfuddledよ。私が試したAND p.name = "Obi-Wan Kenobi"、それは空白を返します。私がしようとした場合WHERE p.name = 'Rey', 'Obi-Wan Kenobi'、私がしようとした場合、それは、失敗しWHERE p.name = 'Rey' AND 'Obi-Wan Kenobi'、結果は空白になっています。私はそれが本当に単純なものだけど、私は解決策を見つけるように見えることはできません。

離れて渡します:

あなたの条件は、取得することであるならば共通で使用されているトランスポートのモード・レイオビ=ワン・ケノービC-3PO、あなたが必要group by typeと追加havingethisのような句を:

SELECT t.type AS OnlyTransportItCouldBe 
FROM transport AS t
INNER JOIN person_transport AS pt ON pt.transport_id = t.id
INNER JOIN person AS p ON pt.person_id = p.id
WHERE p.name IN ('Rey', 'Obi-Wan Kenobi', 'C-3PO')
GROUP BY t.type
HAVING COUNT(DISTINCT p.name) = 3

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=284194&siteId=1