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

时间:2017-05-25 06:30:54

标签: 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 个答案:

答案 0 :(得分:1)

您需要从LEFT JOINed中删除该WHERE表格。我认为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