입력 한 우편 번호와 일치하는 모든 건물을 반환하도록 내 DB에 쿼리하려고합니다. 제 의뢰인이 주제와 관련된 두 개의 테이블로 날을 제공하고있다 : 불행하게도 나를 위해한 필드가 여러 필드에있는 행을 선택하는 방법
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 |
+----+-------------+---------+-----------+
, 우편 번호가 포함 된 테이블은 중복의 건물 코드 (A 우편 번호는 주요 건물이 있고, 보조 건물)
을 포함따라서 우편 번호 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를 되찾았다. (적어도 내가했던 것처럼 보였고, 많은 중복 된 행이있을 수있다.) 그러나 게시 한 두 번째 쿼리는 완벽하게 작동합니다 (클라이언트가 우편 번호 당 3 차 건물을 원할 경우 매우 간단하게 업데이트 할 수 있습니다). – Chaosxmk