Я хочу вернуть все заказы из базы данных между двумя указанными датами. Я хочу вернуть все заказы, даже если заказы не имеют указанных значений из соединенных таблиц (контакты, адреса и т. Д. c).
Когда я выполняю запрос 1, я вижу, что в результате у меня 39 заказов. Но когда я выполняю запрос 2 со своими объединениями, я возвращаю только 31 заказ. Я проверил базу данных, и это потому, что 8 заказов не имеют записей в объединенных таблицах.
Но я думал, что RIGHT OUTER JOIN вернет все значения из объединения, даже если в объединенной таблице есть значение NULL ?
Запрос 1
SELECT * FROM orders
WHERE orders.created_at > '2020-02-01' AND orders.created_at < '2020-02-02'
Запрос 2
SELECT orders.id, orders.status, orders.created_at AS "Date-Time", orders.inbound_ticker, orders.inbound_sum, orders.outbound_ticker, orders.outbound_sum, orders.outbound_type,
CASE WHEN orders.inbound_type='Cryptocurrency' OR orders.outbound_type='Cryptocurrency' THEN 'Crypto' ELSE 'Fiat' END AS "tx type",
customers.first_name AS "Customer First Name", customers.last_name AS "Customer Last Name", addresses.street, addresses.city, addresses.state, addresses.country, addresses.postal_code
FROM orders
RIGHT OUTER JOIN customers ON orders.customer_id = customers.id
RIGHT OUTER JOIN contacts ON contacts.contactable_id = customers.id
RIGHT OUTER JOIN addresses ON customers.id = addresses.locatable_id
WHERE orders.created_at >= '2020-2-01' AND orders.created_at < '2020-2-02'
ORDER BY orders.created_at ASC;