我想从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