2014-01-22 90 views
0

我有一個相當基本的搜索功能,它允許用戶使用各種連接搜索各個領域的公司。其中一部分涉及公司地址,這是一對多的關係。其中一個地址被標記爲公司的總部。查詢可能如下所示:MySQL - 按分組元素排序

SELECT comanies.*,customers.* 
FROM _customers 
NATURAL JOIN companies 
NATURAL JOIN company_addresses 
WHERE company_addresses.city_id = '5556614' 
GROUP BY company_id 

正如您所見,每個公司都必須在該城市有一個地址進行匹配。但是,我也想要命令那些以這個城市爲總部的公司成爲第一。目前,所有的地址都被分組成一行,所以總部的列不能被使用。

我該如何使用那些總部位於cit_id = 5556614的公司先出現?

回答

0

嘗試使用左連接而不是自然連接。理想的結果應該是所有的公司和客戶whos company_address.city_id ='5556614'。所以你不應該得到任何其他數據。

0

我想你想添加這個order by條款:

order by max(company_addresses.IsHeadquarters = 'Y') desc; 

或任何邏輯是識別總部。

我建議您在select條款中加入相同的表達式(max(company_addresses.IsHeadquarters = 'Y')),以便您可以識別總部位於該城市的公司。