У меня есть следующие таблицы -
таблица транзакций со следующими полями -
transactionId
, userId
, merchantId
Таблица пользователей с userID
и details
Торговый стол с merchantId
и details
Могут быть некоторые записи транзакций, для которых merchantId имеет значение NULL.
Я также хочу получить отчет о транзакциях с данными merchantId
и продавцом. Все транзакции должны быть в отчете. Для транзакций без идентификатора продавца поля торговца могут быть NULL.
Соединение LEFT, подобное этому, не возвращает записи для merchantId
null, так как поле merchantId
равно null в таблице транзакций -
Запрос:
SELECT vt.*,
u.userDetails,
m.merchantId,
m.merchantDetails
FROM TRANSACTION AS vt
LEFT JOIN merchant AS m ON vt.merchantId = m.merchantId
JOIN users AS u ON vt.userId = u.userID;
Можно ли это сделать только в одиночку?
Ваш запрос работает так, как должен. Он возвращает все транзакции из транзакции таблицы, и если merchantId имеет значение NULL, чем данные продавца, имеет значение null... но транзакция по-прежнему находится в списке.
Посмотрите сами (я вставил 4 транзакции, включая 1 с NULL в поле merchantId):