【问题标题】:postgresql - Join tables on match but also ones that are not matching?postgresql - 加入匹配的表,但也加入不匹配的表?
【发布时间】:2017-05-02 19:28:03
【问题描述】:

所以我有一个连接并且它可以工作,但它没有向我显示我想要的所有数据。目前我想看到device_interface.c1 中的每一行,如果device_interface.c1 = device_inventory.c1 也想在列中看到它。现在我只看到device_interface.c1 = device_inventory.c1.

以下是我的查询:

SELECT 
  device_info.pk,
  device_interface.fk, 
  device_interface.c1, 
  device_interface.c2, 
  device_inventory.c1
FROM 
  "test".device_info, 
  "test".device_interface, 
  "test".device_inventory
WHERE 
  device_info.pk = device_interface.fk AND
  device_info.pk = device_inventory.fk AND
  device_interface.c1 = device_inventory.c1 AND
  device_interface.c2 = 'Physical'

示例输出:

device_info.pk  device_interface.c1   device_inventory.c1
1                        1                     1
1                        3                     3
1                        95                    95
2                        55                    55
2                        634                   634

所需输出示例:

device_info.pk  device_interface.c1   device_inventory.c1
1                        1                     1
1                        2          
1                        3                     3
1                        4
1                        5
1                        6
1                        95                    95
2                        55                    55
2                        56 
2                        57
2                        634                   634

【问题讨论】:

标签: sql postgresql select join


【解决方案1】:

left join 应该可以解决问题:

SELECT 
  device_info.pk,
  device_interface.fk, 
  device_interface.c1, 
  device_interface.c2, 
  device_inventory.c1
FROM 
  "test".device_info
LEFT JOIN
  "test".device_interface 
ON 
  device_info.pk = device_interface.fk
LEFT JOIN
  "test".device_inventory 
ON 
  device_info.pk = device_inventory.fk AND
  device_interface.c1 = device_inventory.c1
WHERE 
  device_interface.c2 = 'Physical'

【讨论】:

  • 谢谢大家,我是新手,这将有很大帮助!!
猜你喜欢
  • 2021-10-14
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多