【问题标题】:Joining same table multiple times ,resulting double records多次加入同一个表,导致双记录
【发布时间】:2021-05-08 15:17:18
【问题描述】:

我的主表包含 DEPARTURE_CITY、ARRIVAL CITY 等字段。另一个表 secondry_details 包含 city_code 和 city_name。

我想要像这样的输出 Departure_city,City_code,Arrival_city,City_code

下面的查询返回正好两次的记录,像交叉连接一样工作

'''选择m.Departure_city,s1.City_code作为departure_city_code,m.Arrival_city,s2.Arrival_city_code 从主表 m

左加入 secondry_details1 s1 ON m.Departure_city=s1.city_name

左加入 secondry_details1 s2 ON m.Arrival_city=s2.city_name'''

请帮忙。

【问题讨论】:

  • 不应该将left join secondry_details1 s2 ON m.Departure_city=s2.city_name 更改为left join secondry_details1 s2 ON m.Arrival_city=s2.city_name''' 吗?您也可能希望按主表对其进行分组。请提供一个类似dba.stackexchange.com/help/minimal-reproducible-example的例子。
  • @AdamTokarski,谢谢你提醒我,我发错了。你现在可以试试吗
  • 请提供一些小脚本来创建这些表,插入量最少。然后我们可以讨论如何更改您的查询以实现您想要的。您可以使用我之前消息中的链接中提到的一些 db fiddle。
  • @AdamTokarski ,这里是创建表 travel_master (departure_city varchar(30),arrival_city varchar(30)) 的脚本;插入到 travel_master values('London','Chicago');create table secondry_details1 ( city_name varchar(30),city_code int) ;插入 secondry_details1 值('London',110),('Chicago',120);
  • 你使用什么数据库(mssql、postgres、mysql等)?

标签: sql join duplicates left-join


【解决方案1】:

我已经检查了这个查询


select 
    m.departure_city, s1.city_code as departure_city_code,
    m.arrival_city,s2.city_code 
from travel_master m
left join secondry_details1 s1 ON m.departure_city = s1.city_name
left join secondry_details1 s2 ON m.arrival_city = s2.city_name;

那里:https://www.db-fiddle.com/f/c7uKuWYYTTwZCfqufBC7tv/0,它按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多