【问题标题】:how to stop INNER JOIN from showing repeat data如何阻止 INNER JOIN 显示重复数据
【发布时间】:2017-10-15 20:42:05
【问题描述】:

我正在处理多个表上的数据,我正在尝试获取一些信息,但我不断收到重复数据。

  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';

我想要做的是获取城市名称承运人和一些乘客,但似乎输出不断重复数据。 例如我会得到:

如您所见,数据重复了几百次,有没有办法解决这个问题?

【问题讨论】:

  • 您在寻找 Distinct 吗?
  • 当您使用非主键列进行内联表时,您可能会得到重复的查询数据。例如:TravelInfo 表中可能有多条记录具有相同的destination_airport_id,或者Flights 表中可能有多条记录具有相同的destination_airport_id。如果您可以根据“CarrierInfo.passengers=7713”为每个表检索一些示例数据并将其发布在此处,我们可能会更好地了解我们正在处理的内容。
  • 嗨。请清楚地解释“获取重复数据”,以及为什么这是一个问题——为什么 that 输出不是你想要的——即告诉我们你的查询应该做什么。您没有清楚地说明连续“乘客人数”与其“城市名称”和“承运人”的关系。请阅读minimal reproducible example 并采取行动。 Please use text if you can. Like instead of that image..

标签: sql postgresql select join inner-join


【解决方案1】:

您可以总结城市和目的地的乘客。

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;

但我相信这会过度报告乘客人数,因为我在您的输出中看到重复的乘客。因此,在您的联接中的某个地方,您正在复制数据。

【讨论】:

    猜你喜欢
    • 2014-06-26
    • 2016-03-25
    • 2021-10-09
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多