即使1个表为空,PostgreSQL连接2个表并获取所有值
问题描述:
我有2个表。对象和属性。属性表具有对象的属性。但有可能该对象没有任何属性。 我想进行查询,以便我得到所有具有属性(属性列中的值)的对象以及所有不具有属性的对象(在此情况下属性列将为空)即使1个表为空,PostgreSQL连接2个表并获取所有值
示例:简化查询给出相同的结果
SELECT
row_number() OVER() AS id,
seire.id seire_id,
tegevus.arenguvajadus
FROM andmed seire
RIGHT OUTER JOIN tegevused tegevus ON seire.id = tegevus.seire_id
WHERE tegevus.aktiivne = true
数据例如:
andmed:
Id, Data
1 , ...
2, ...
tegevused
id, aktiivne, arenguvajadus, seire_id
1, true, something something, 1
1, true, something2 , 1
预期结果
ID, Seire_id, arenguvajadus
1, 1, something something
2, 1, something2
3, 2,
答
您需要从WHERE
删除LEFT JOINed
表。我假设tegevused
是属性。
SELECT
row_number() OVER() AS id,
seire.id seire_id,
tegevus.arenguvajadus
FROM andmed seire
LEFT OUTER JOIN tegevused tegevus ON seire.id = tegevus.seire_id AND tegevus.aktiivne = true
+0
是的这工作。泰 –
什么问题?看起来像简单的'LEFT JOIN'给我。 –
@ŁukaszKamiński没有,LEFT JOIN没有解决这个问题。我仍然得到相同的结果,我只得到具有属性的对象。 Probabli UNION将是解决方案。 1选择具有属性的对象和另一个具有属性的对象 –
如果左连接没有帮助 - 使用'右外连接' –