具有额外关系行或空的SQL查询

时间:2019-07-18 21:35:28

标签: sql postgresql

我有 帐户(ID,名称) 多对一交易(id,name,account_id) pos(id,name,deal_id)多对一交易

我想导出一个包含所有帐户,交易和pos的出口。

  • 并非所有交易都具有po,因此,如果我来自PO,那么我会错过一些交易。
  • 如果我进行交易,即使有2个或更多,我也只会得到0或1个订单。我可能还会想念一些帐户,因为并非所有帐户都有交易。
  • 所有pos都有交易,所有交易都有一个帐户。

我认为我需要为每个没有关系的地方做一份单独的报告,然后将它们合并在一起。我的语法不太正确。

表可能是

account_name  | deal_name    | po_name
cool account  | null         | null
another       | sweet deal   | null
another       | bitter sweet | null
last for best | deal 1       | po here
last for best | deal 1       | another po
last for best | deal 2       | null
last for best | deal 3       | o yea

1 个答案:

答案 0 :(得分:1)

您需要将left joinsaccountsdeals,最后是pos

select
  a.name account_name,
  d.name deal_name,
  p.name po_name
from accounts a
left join deals d on d.account_id = a.id
left join pos p on p.deal_id = d.id