[SQL] 내부는 여러 컬럼에 가입 할 방법
SQL내부는 여러 컬럼에 가입 할 방법
나는 숙제 프로젝트를 진행하고 있는데 나는 도시 이름 또는 공항 코드 중 하나 항공편을 찾아 데이터베이스 쿼리를 수행하기로되어있어,하지만 난이 도시에서 검색 할 경우 항공편의 테이블은 너무 공항 코드를 포함 공항 테이블에 가입.
번호, 도시 : 공항 테이블에는 다음과 같은 열이 있습니다 항공사, flt_no, 페어 포트, tairport, 출발, 도착, 요금 : 비행 테이블에는 다음과 같은 열이 있습니다 열은 페어 포트와 tairport은 공항 코드에 있습니다. 출발 및 도착 날짜 열 출발 및 도착입니다.
내가 먼저 페어 포트 컬럼과 airports.code 열에서 항공편을 조인하는 쿼리를 내놓았다. 나를 tairport 일치하기 위해서는 내가 다른 먼저 조인에서 이전 경기에 참가 수행해야합니다.
SELECT airline, flt_no, fairport, tairport, depart, arrive, fare
FROM (SELECT * FROM flights
INNER JOIN airports
ON flights.fairport = airports.code
WHERE (airports.code = '?' OR airports.city='?')) AS matches
INNER JOIN airports
ON matches.tairport = airports.code
WHERE (airports.code = '?' OR airports.city = '?')
내 쿼리는 올바른 결과를 반환하며 숙제의 목적을 위해 충분하지만 여러 컬럼에 가입 할 수 있는지 궁금하네요? 그 출발과 목적지 / 코드와 일치하도록 어떻게 WHERE 절을 만들 것인가?
아래는 내가 달성하고 싶은에 "의사 쿼리는"하지만, 나는 제대로 구문을 얻을 수와 내가 출발 및 목적지의 공항 테이블을 표현하는 방법을 모른다 :
SELECT * FROM flights
INNER JOIN airports
ON flights.fairport = airports.code AND flights.tairport = airports.code
WHERE (airports.code = 'departureCode' OR airports.city= 'departureCity')
AND (airports.code = 'destinationCode' OR airports.city = 'destinationCity')
또한 SQL 문을 구성하는 방법에 대한 일반적인 가이드로 매우 도움이 될 제표에 참여 SQL의 시각적 표현을 발견!
해결법
-
==============================
1.다음 예에서와 같이 조인 된 테이블을 별칭을 제공하여 두 번 이상 같은 테이블에 가입 할 수 있습니다 :
다음 예에서와 같이 조인 된 테이블을 별칭을 제공하여 두 번 이상 같은 테이블에 가입 할 수 있습니다 :
SELECT airline, flt_no, fairport, tairport, depart, arrive, fare FROM flights INNER JOIN airports from_port ON (from_port.code = flights.fairport) INNER JOIN airports to_port ON (to_port.code = flights.tairport) WHERE from_port.code = '?' OR to_port.code = '?' OR airports.city='?'
참고 to_port 및 from_port은 공항 테이블의 제 1 및 제 2 사본 별명 있음.
-
==============================
2.뭔가 같은 ....
뭔가 같은 ....
SELECT f.* ,a1.city as from ,a2.city as to FROM flights f INNER JOIN airports a1 ON f.fairport = a1. code INNER JOIN airports a2 ON f.tairport = a2. code
-
==============================
3.MySQL은 당신을 위해 괜찮 경우 :
MySQL은 당신을 위해 괜찮 경우 :
SELECT flights.*, fromairports.city as fromCity, toairports.city as toCity FROM flights LEFT JOIN (airports as fromairports, airports as toairports) ON (fromairports.code=flights.fairport AND toairports.code=flights.tairport ) WHERE flights.fairport = '?' OR fromairports.city = '?'
편집 : 추가 된 예는 코드 또는 도시의 출력을 필터링하기
-
==============================
4.당신은 절에와 사용할 수 있습니까?
당신은 절에와 사용할 수 있습니까?
예를 들어, 뭔가 같은 :
SELECT airline, flt_no, fairport, tairport, depart, arrive, fare FROM flights INNER JOIN airports from_port ON (from_port.code = flights.fairport) and (to_port.code = flights.tairport)
-
==============================
5.당신이 FROM 및 공항 모두에서 검색 할 경우, 당신은 두 번 공항 테이블에 가입 할 수 있습니다 - 다음에서 설정하고 결과의 테이블에 모두 사용할 수 있습니다 :
당신이 FROM 및 공항 모두에서 검색 할 경우, 당신은 두 번 공항 테이블에 가입 할 수 있습니다 - 다음에서 설정하고 결과의 테이블에 모두 사용할 수 있습니다 :
SELECT Flights.*,fromAirports.*,toAirports.* FROM Flights INNER JOIN Airports fromAirports on Flights.fairport = fromAirports.code INNER JOIN Airports toAirports on Flights.tairport = toAirports.code WHERE ...
from https://stackoverflow.com/questions/2366780/how-to-do-an-inner-join-on-multiple-columns by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 큰 테이블에 SQL 서버 쿼리 성능 향상 (0) | 2020.05.17 |
---|---|
[SQL] 엑셀 워크 시트에서 SQL 삽입 스크립트를 생성 (0) | 2020.05.17 |
[SQL] 선택 SQL Server 데이터베이스 크기 (0) | 2020.05.17 |
[SQL] 어떻게 급여 테이블에서 세 번째 또는 n 번째 최대 급여를 찾는 방법은? (0) | 2020.05.17 |
[SQL] # 1273 - 알 수없는 정렬 : 'utf8mb4_unicode_520_ci' (0) | 2020.05.17 |