2017-10-15 819 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

你在找**不同**嗎? – L30n1d45

+0

當您使用非primaryKey列內連接表時,可能會得到重複查詢的數據。例如:在TravelInfo表中可能有多個記錄與同一個desitination_airport_id相同,或者在Flights表中具有相同destination_airport_id的多個記錄。如果您可以根據「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。所以在你的加入中,你正在複製數據。