Я бы хотел выбрать Addresses
из БД MySQL. Addresses
может иметь Contact
, Organization
или оба. (A Contact
может иметь много Addresses
. Так же, как и Organization
.)
Допустим, я хочу получить все Organization
Addresses
. Это не страшно. Но что, если я захочу ORDER
их Contact.last_name
? Некоторые из Addresses
не имеют Contact
.
Я провел некоторые эксперименты и обнаружил, что если вы ORDER BY contacts.last_name
, то будут возвращены только те Addresses
, которые имеют Contact
. Я попытался ORDER BY contacts.last_name, addresses.street1
, но все еще только Addresses
, с которым было связано Contact
, было возвращено.
Есть ли запрос, который найдет Addresses
по Organization.id
, упорядочит результаты по Contact.last_name
и включит все Organization
Addresses
, даже те, которые не имеют Contact
Структура стола
addresses
---------
id
contact_id
organization_id
street1
contacts
--------
id
last_name
organizations
-------------
id
name
Решение:
Возвращает все Organization
Addresses
:
SELECT a.*
FROM addresses a
LEFT JOIN contacts c
ON a.contact_id = c.id
WHERE a.organization_id = '8283'
ORDER BY c.last_name
ОК, отлично, вышеупомянутый запрос решил.