SQL несколько таблиц одно условие неуместно - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть этот sql:

SELECT logins.*, users.*, invoices.number
FROM logins,
     users,
     invoices
WHERE logins.user_id = users.id
  AND users.id = invoices.userId;

Это упрощенная версия моего заявления.Реальность сложнее.

Когда

users.id = invoices.userId

ложно (так как в накладных таблицы нет строки с этим userId), мне нужно добавитьto invoices.number = 0.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Используйте left join для возврата строк, даже если счета не найдены.Для этих строк столбцы из таблицы invoices будут null.Вы можете использовать coalesce для возврата 0 вместо null в этой ситуации:

SELECT  logins.*
,       users.*
,       COALESCE(invoices.number, 0) AS number
FROM    logins
JOIN    users
ON      logins.user_id = users.id
LEFT JOIN
        invoices
ON      users.id = invoices.userId
0 голосов
/ 07 февраля 2019

использовать явное соединение вместо соединения через запятую

SELECT logins.*, users.*, invoices.number
FROM logins 
join users on logins.user_id=users.id
join invoices on  users.id=invoices.userId;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...