LEFT JOIN と GROUP BY を使用して、1 対多のマッピングを持つテーブルを組み合わせることができません。
一意の ID を持つ次のテーブルがあります (この例では、これは house_number です)
住宅:
|house_number| bedrooms|
|0 | 4 |
|1 | 3 |
|2 | 1 |
そして、一意の ID を使用して 2 番目のテーブルと LEFT JOIN したいのですが、2 番目のテーブルには一意の ID ごとに複数のエントリがある場合とない場合があります。例えば、
居住者:
| house_number | occupant_id | type |
| 0 | 3 | 19 |
| 0 | 1 | 20 |
| 0 | 2 | 21 |
| 2 | 7 | 20 |
今私が達成したいのは、住宅番号ごとに正確に1つのエントリですが、LEFT JOINでタイプ20の居住者を優先し、居住者がリストされていない家も保持します。
|house_number| bedrooms| occupant_id | type |
|0 | 4 | 1 | 20 |
|1 | 3 | null | null |
|2 | 1 | 7 | 20 |
GROUP BY を使用して、家ごとに 1 つのエントリのみを取得できますが、返された占有者の行 (存在する場合) がtype = 20
.
単純に a を使用するWHERE (type = 20)
と、house_number = 1 のエントリは返されません。
どうすればこのファイナル テーブルに到達できますか?