入力した郵便番号と一致するすべての建物を返すようDBを照会しようとしています。私のクライアントは、被験者に関連する2つのテーブルを提供してくれました。残念ながら私にとって複数のフィールドに1つのフィールドがある行を選択する方法
buildings
+----+------------+---------------+
| id | name | building_code |
+----+------------+---------------+
| 1 | Building A | 001 |
| 2 | Building B | 002 |
| 3 | Building C | 003 |
+----+------------+---------------+
postal_codes
+----+-------------+---------+-----------+
| id | postal_code | primary | pecondary |
+----+-------------+---------+-----------+
| 1 | A1A 1A1 | 001 | 002 |
| 2 | B2B 2B2 | 002 | 003 |
| 3 | C3C 3C3 | 003 | 001 |
+----+-------------+---------+-----------+
、郵便番号を含むテーブルは、重複の建築コード(郵便番号が主要な建物があり、二ビル)
が含まれていますしたがって、郵便番号A1A
の建物を検索するときは、建物Aと建物Bを受け取る必要があります。これはそれほど大きな問題ではありませんが、私が見つけた唯一の方法ですそれは信じられないほどかさばり、将来の校正のための多くの選択肢を残しませんか?
SELECT * FROM buildings
WHERE (building_code IN (SELECT primary FROM postal_codes
WHERE postal_code LIKE '%A1A%')
OR
building_code IN (SELECT secondary FROM postal_codes
WHERE postal_code LIKE '%A1A%'))
私はちょうどbuilding IN (SELECT primary, secondary FROM postal_codes)
を実行しようとしましたが、エラーを引き起こします。
あなたが投稿した最初のコードを試しましたが、うまくいきませんでした。私はdatabse全体を取り戻しました(少なくとも、私がやったように見えました、重複した行がたくさんあるかもしれません)。しかし、投稿した2番目のクエリは完全に機能しました(クライアントが郵便番号ごとに3番目の建物を望む場合は更新が非常に簡単です)。 – Chaosxmk