2017-10-15 5 views
0

여러 테이블의 데이터로 작업 중이며 일부 정보를 얻으 려하지만 반복 데이터가 계속 표시됩니다. 내가 뭘하려고 오전INNER JOIN이 반복 데이터를 표시하는 것을 중지하는 방법

SELECT Airport.city, StateInfo.state_name, TravelInfo.destination, 
    Carrier.unique_carrier_name, CarrierInfo.passengers 
    FROM Airport 
    INNER JOIN TravelInfo 
    ON Airport.airport_id = TravelInfo.destination_airport_id 
    INNER JOIN Flights 
    ON Airport.airport_id = Flights.destination_airport_id 
    INNER JOIN StateInfo 
    ON Airport.airport_id = StateInfo.airport_id 
    INNER JOIN Carrier 
    ON Flights.airline_id = Carrier.airline_id 
    INNER JOIN CarrierInfo 
    ON Carrier.airline_id = CarrierInfo.airline_id 
    WHERE Airport.state = 'CO'; 

도시가 캐리어와 승객의 숫자를 이름을 얻을이지만 출력이 데이터를 반복 유지 것으로 보인다. 예를 들어 내가 얻을 것이다 :

enter image description here

당신이 데이터가이 문제를 해결하는 방법이 몇 백 번 반복됩니다 볼 수 있듯이?

+1

** Distinct **를 찾고 계십니까? – L30n1d45

+0

비 primaryKey 열을 사용하여 테이블을 내부 조인 할 때 쿼리 된 데이터가 중복 될 수 있습니다. 예 : 동일한 desitination_airport_id가있는 TravelInfo 테이블에 여러 레코드가 있거나 동일한 destination_airport_id가있는 Flights 테이블에 여러 레코드가있을 수 있습니다. "CarrierInfo.passengers = 7713"을 기반으로 각 표에 대한 일부 샘플 데이터를 검색하여 여기에 게시 할 수 있다면 우리가 다루고있는 것을 더 잘 이해할 수 있습니다. –

+0

안녕하세요. "반복적 인 데이터 가져 오기"에 대해 명확하게 설명하십시오. 왜 여기에 문제가 있습니까? - 왜 * 결과물이 원하는 것이 아닌지 - 예를 들어 귀하의 질의에 적합한 것을 알려주십시오. 연속적으로 "승객 수"가 "도시 이름"및 "운송 업체"와 어떻게 관련되어 있는지 명확하게 밝히지 않았습니다. [mcve]를 읽고 행동하십시오. [가능한 경우 텍스트를 사용하십시오. 그 이미지 대신에.] (https://stackoverflow.com/questions/14588304/composite-primary-key-vs-additional-id-column). – philipxy

답변

0

도시와 목적지에 대한 passangers를 요약 할 수 있습니다.

SELECT Airport.city, StateInfo.state_name, TravelInfo.destination, 
    Carrier.unique_carrier_name 
    ,sum(CarrierInfo.passengers) as passengers 
    FROM Airport 
    INNER JOIN TravelInfo 
    ON Airport.airport_id = TravelInfo.destination_airport_id 
    INNER JOIN Flights 
    ON Airport.airport_id = Flights.destination_airport_id 
    INNER JOIN StateInfo 
    ON Airport.airport_id = StateInfo.airport_id 
    INNER JOIN Carrier 
    ON Flights.airline_id = Carrier.airline_id 
    INNER JOIN CarrierInfo 
    ON Carrier.airline_id = CarrierInfo.airline_id 
    WHERE Airport.state = 'CO' 
    GROUP BY 1,2,3,4; 

는하지만 난 당신의 출력에 중복 passangers를보기 때문에이 넘는 승객 수를보고하는 것입니다 생각합니다. 따라서 조인의 어느 곳에서나 데이터를 복제하고 있습니다.