即使1个表为空,PostgreSQL连接2个表并获取所有值

即使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,  
+1

什么问题?看起来像简单的'LEFT JOIN'给我。 –

+0

@ŁukaszKamiński没有,LEFT JOIN没有解决这个问题。我仍然得到相同的结果,我只得到具有属性的对象。 Probabli UNION将是解决方案。 1选择具有属性的对象和另一个具有属性的对象 –

+0

如果左连接没有帮助 - 使用'右外连接' –

您需要从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

是的这工作。泰 –