У меня есть эти две таблицы:

< Сильный > Прием

id  reception_date      tin_lot company_id  client_id   quantity    weight
1   2013-12-03 00:00:00 1       1           1           10          1980.00
2   2013-12-03 00:00:00 2       1           1           1           150.00
3   2013-12-13 00:00:00 3       1           2           10          4500.00
4   2013-12-13 00:00:00 4       2           5           5           2300.00

< Сильный > Оплата

id  payment_date        amount  reception_id
1   2013-12-03 00:00:00 500.0   1
2   2013-12-03 00:00:00 1200.0  3

Я хочу получить следующий результат:

Ожидаемый результат

id  reception_date      tin_lot client_id   weight      payment_made
1   2013-12-03 00:00:00 1       1           1980.00     500.0
2   2013-12-03 00:00:00 2       1           150.00      0.0
3   2013-12-13 00:00:00 3       2           4500.00     1200.0
4   2013-12-13 00:00:00 4       5           2300.00     0.0

Я пробую этот запрос:

select rec.id
rec.reception_date,
rec.tin_lot,
rec.client_id,
rec.weight,
pay.payment_made
from liquidation.reception rec, liquidation.payment pay
where pay.recepcion_id=rec.id

Но здесь не указаны приемы без оплаты.

Пожалуйста, помогите мне. Заранее спасибо.

0
Manuel Calles 18 Дек 2013 в 03:58

2 ответа

Лучший ответ

Это потому, что вам нужно научиться использовать left outer join и правильный синтаксис соединения. Только не используйте больше запятую в предложении from.

Вот желаемый запрос:

select rec.id, rec.reception_date, rec.tin_lot, rec.client_id, rec.weight,
       coalesce(pay.payment_made, 0) as payment_made
from liquidation.reception rec left outer join
     liquidation.payment pay
     on pay.recepcion_id = rec.id;
0
Gordon Linoff 18 Дек 2013 в 00:01

Вам нужно Влево Присоединиться к таблице выплат:

from liquidation.reception rec
left join  liquidation.payment pay on ( pay.recepcion_id=rec.id)
1
Stanley 18 Дек 2013 в 00:01