如何阻止INNER JOIN显示重复数据

问题描述:

我正在处理多个表上的数据,我正在尝试获取一些信息,但我不断收到重复数据。如何阻止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://*.com/questions/14588304/composite-primary-key-vs-additional-id-column)。 – philipxy

你可以总结城市和目的地的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。所以在你的加入中,你正在复制数据。