I'd like to select some Addresses from a MySQL DB. Addresses can have a Contact, an Organization, or both. (A Contact can have many Addresses. So can an Organization.)
Let's say I want to get all of an Organization's Addresses. That's no big deal. But what if I want to ORDER them by Contact.last_name? Some of the Addresses don't have a Contact.
I did some experimenting and discovered that if you ORDER BY contacts.last_name, then only those Addresses that have a Contact will be returned. I tried ORDER BY contacts.last_name, addresses.street1, but still only Addresses that had an associated Contact were returned.
Is there a query that will find Addresses by Organization.id, order the results by Contact.last_name, and include all the Organization's Addresses, even ones that don't have a Contact?
Table structure
addresses
---------
id
contact_id
organization_id
street1
contacts
--------
id
last_name
organizations
-------------
id
name
Solution:
Returns all the Organization's 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
OK, great the above query solved it.