복붙노트

[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. ==============================

    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. ==============================

    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. ==============================

    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. ==============================

    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. ==============================

    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
     ...
    
  6. from https://stackoverflow.com/questions/2366780/how-to-do-an-inner-join-on-multiple-columns by cc-by-sa and MIT license