我想從MySQL DB中選擇一些Addresses
。 Addresses
可以具有Contact
,Organization
或兩者。 (A Contact
可以有很多Addresses
,因此可以在Organization
。)MySQL排序SELECT by關聯列
比方說,我想所有的Organization
的Addresses
的。這沒什麼大不了的。但是如果我想ORDER
他們通過Contact.last_name
?一些Addresses
沒有Contact
。
我做了一些試驗,發現如果你ORDER BY contacts.last_name
,那麼只有那些Addresses
有Contact
將被返回。我試過ORDER BY contacts.last_name, addresses.street1
,但仍然只有Addresses
有一個關聯的Contact
被返回。
是否有會找到Organization.id
Addresses
,由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
好的,很好,上面的查詢解決了它。
有關表結構或您嘗試過的查詢的更多信息將會有所幫助。 – 2009-10-10 20:08:34
'ORDER BY'不會過濾結果。默認排序是升序(ASC),因此空值位於列表頂部。我認爲你將ORDER BY與JOIN標準混合 - 發佈你正在使用的查詢。 – 2009-10-10 20:12:11
如果你可以避免,我會敦促你不要添加虛擬數據。 – akf 2009-10-10 20:13:27