получить все записи из таблицы A, а не из таблицы B - PullRequest
0 голосов
/ 03 марта 2020

У меня есть 2 таблицы со следующими данными

Таблица A

code  Desc
1     john
2     dave
3     mike
4     lily
5     cobe
6     rose

Таблица B

code    marks
1       30
2       35
3       40
5       29

Таблица результатов

code   Desc   Marks
1      john      30
2      dave      35
3      mike      40
4      lily       0
5      cobe      29
6      rose       0

I попытался использовать левое соединение, но при этом отображаются только записи, представленные в таблице B

Ответы [ 2 ]

2 голосов
/ 03 марта 2020

LEFT JOIN должно работать. Я думаю, может быть, вы пытаетесь получить значения 0 вместо нулевых пробелов? Если это так, вам нужно использовать COALESCE():

postgres=# select a.code,"Desc",coalesce("Marks",0) as "Marks"
from tablea a 
left join tableb b on a.code=b.code;
 code | Desc | Marks 
------+------+-------
    1 | john |    30
    2 | dave |    35
    3 | mike |    40
    4 | lily |     0
    5 | cobe |    29
    6 | rose |     0

Раскрытие информации: я работаю на EnterpriseDB (EDB)

0 голосов
/ 03 марта 2020

Будет работать левое соединение, но вы должны использовать from students. Таблица from является "левой" стороной объединения. См. Визуальное представление SQL Соединений для превосходной визуализации.

И используйте coalesce , чтобы превратить отсутствующие метки в 0.

select id, name, coalesce(mark, 0)
from students s
left join marks m on m.student_id = s.id
order by s.id;

Попробуй .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...