1

'people'、'people2id'、'places' の 3 つの MySQL テーブルがあります。最初のテーブルには人に関する情報が格納され、'places' テーブルには住所に関する情報が格納されます。真ん中の 'people2id' は、この 2 つのテーブルを相互接続します (1 人の人物が 2 つ以上のアドレスを持っている可能性があります)。

今、私はある人のプロフィールに行き、彼のプロフィールだけでなく、彼に関連付けられたアドレスも見たいと思っています。そのために次のクエリを作成しました。

 SELECT * FROM people p
 JOIN people2id e ON p.peopleId = e.peopleId
 JOIN places a ON a.peopleId = e.peopleId
 WHERE p.peopleId = number

これは、その人が関連付けられた住所を持っている場合に機能しますが、そうでない場合は失敗します。この件に関して、何らかの種類の JOIN を使用する必要があるのか​​、それとも UNION を使用する必要があるのか​​ わかりません。

4

3 に答える 3

4

を に変更しJOINますLEFT JOIN

 SELECT * FROM people p
 LEFT JOIN people2id e ON p.peopleId = e.peopleId
 LEFT JOIN places a ON a.peopleId = e.peopleId
 WHERE p.peopleId = number

を使用すると、関連付けられたレコードが含まれているかどうかに関係なく、LEFT JOINのすべてのレコードが含まれます。people

于 2013-09-26T18:00:53.203 に答える
2

UNIONは、2 つの異なるクエリから同じ種類の情報を取得し、それらを 1 つの結果セットとして返すために使用されます。

JOINは、列とデータを行に追加するために使用されます(それほど単純ではありませんが、このように表示できます)

于 2013-09-26T18:00:38.203 に答える
0

を使用する必要がありますLEFT JOIN

SELECT * FROM people p
JOIN people2id e ON p.peopleId = e.peopleId
LEFT JOIN places a ON a.peopleId = e.peopleId
WHERE p.peopleId = number
于 2013-09-26T18:01:51.863 に答える