2011-08-26 9 views
1

에 외래 키와 크로스 테이블 나는 세 개의 테이블이 : 내 목표는 우편 번호 또는 도시 중 하나에 대한 쿼리를 실행하고에서 그와 관련된 모든 데이터를 얻을 수 있습니다 SQL : 두 개의 서로 다른 테이블

zip_code_data 
|zipCodeId| primary key 
|zipCode| indexed 
|other columns...| 

location_data 
|locationDataId| primary key 
|city| indexed 
|other columns...| 

x_data 
|id| primary key 
|zipCodeId| foreign key 
|locationDataId| foreign key 

zip_code_data location_data 테이블 예를 들어
하는 우편 번호를 검색하면 내가 다시 모두 두 테이블에서 해당 우편 번호와 관련된 데이터를 끌어합니다.

내 첫 번째 추측은 십자가 테이블 (먼저 x_data, 아래 예제)에서 외래 키를 가져온 다음 각 테이블에서 데이터를 가져 오는 데 사용합니다 ... 나는 초보 사용자입니다. 나는 이것을하는 가장 좋은 방법을 모른다.

SELECT x_data.zipCodeId, x_data.locationDataId 
FROM x_data 
INNER JOIN zip_code_data 
ON x_data.zipCodeId=zip_code_data.zipCodeId 
WHERE zip_code_data.zipCode LIKE '2322%' 

답변

0

내가 게시하고 있었다 :

SELECT zip.*,loc.* 
FROM x_data xref 
JOIN zip_code_data zip ON zip.zipCodeId=xref.zipCodeID 
JOIN location_Data loc ON loc.locationDataID=xRef.locationDataID 
WHERE zip.zipCode LIKE '2322%' or loc.city LIKE '%aaa%' 

을하지만, 이미 가지고 계신 것 같습니다 ...

2

당신은 인라인 뷰 만들 수 있습니다

select zips.othercolumn, LOCS.city 
     from zips 
      inner join x_data on zips.zip = x_data_zip and zips.zip like ..... 

      left join (
       select id, locations.city from locations 
       where locations.id = x_data.locationid 
      ) as LOCS 

을하거나 위치 테이블 조인

  left join locations as locs on locs.locationid = x_data.locationid 
+0

빠른 답장을 보내 주셔서 감사합니다. 나는 당신이 이것을 게시하기 바로 전에 실제로 다른 방법으로 알아 냈습니다. – Sababado

+0

SELECT zip_code_data. * location_data. * x_data FROM INNER JOIN을 zip_code_data ON x_data.zipCodeData_Id = zip_code_data.zipCodeId INNER JOIN location_data ON x_data.locationData_Id = location_data.locationDataId 여기서 zip_code_data.zipCode '23,221%'추천 – Sababado

관련 문제