숙제 프로젝트를 진행 중이며 도시 이름이나 공항 코드로 항공편을 찾는 데이터베이스 쿼리를 수행해야하지만 flights
테이블에는 공항 코드 만 포함되어 있으므로 도시별로 검색하려면 airports
테이블 에 조인 하십시오.
공항 테이블에는 다음과 같은 열이 있습니다 code, city
플라이트 (flight) 테이블에는 다음과 같은 열이 있습니다 airline, flt_no, fairport, tairport, depart, arrive, fare
열을 fairport
하고 tairport
이다 에서 와 에 공항 코드.
열 depart
및 arrive
출발 및 도착 날짜입니다.
먼저 fairport
열과 열의 항공편을 조인하는 쿼리가 나타났습니다 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 = '?')
내 쿼리는 올바른 결과를 반환하고 숙제의 목적으로 충분하지만 JOIN
여러 열에서 할 수 있는지 궁금합니다 . WHERE
출발 및 도착 도시 / 코드와 일치하도록 조항을 어떻게 구성 합니까?
아래는 내가 달성하고자하는 것에 대한 “의사 쿼리”이지만 구문을 올바르게 얻을 수 없으며 airports
출발지와 목적지에 대한 테이블 을 나타내는 방법을 모르겠습니다 .
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 문을 구성하는 방법에 대한 일반적인 가이드로 도움이!
답변
다음 예제와 같이 조인 된 테이블에 alias 를 지정하여 동일한 테이블로 두 번 이상 JOIN 할 수 있습니다 .
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
의 제 2 복사본에 대한 별칭 airports
테이블.
답변
뭔가 …
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
답변
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 = '?'
편집 : 코드 또는 도시의 출력을 필터링하는 예제 추가
답변
on 절에서 사용할 수 있습니까?
예를 들면 다음과 같습니다.
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)
답변
FROM 및 TO 공항에서 모두 검색하려면 공항 테이블에서 두 번 조인하고 싶을 때 결과 집합에서 출발 및 도착 테이블을 모두 사용할 수 있습니다.
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
...