[英]Display multiple results with INNER JOIN
我有以下三個MySQL表:
companies services auxiliary
id_company name_company id_service name_service id_company id_service
1 Google 1 Search 1 1
2 Yahoo 2 Calendar 1 2
3 Mail 1 3
4 Maps 1 4
2 1
2 3
我想知道是否可以只顯示一個查詢(我正在使用php):
Google: Search, Calendar, Mail, Maps.
Yahoo: Search, Mail.
現在,我正在做的是顯示公司,並為每個公司執行另一個MySQL查詢以顯示服務。 是否可以只執行一個查詢? 謝謝。
您的問題的答案是:“是”。
哦,您也想知道如何去做。 關鍵是將表連接在一起,然后在公司級別進行匯總。 我將假設您確實希望將輸出分為兩列(公司名稱,服務),而不是將它們串聯在一起的一個字符串。
SQL是:
select c.name_company, group_concat(s.name_service separator ', ') as services
from auxiliary a join
companies c
on a.id_company = c.id_company join
services s
on a.id_service = s.id_service
group by c.id_company, c.name_company;
是的,你可以。 盡管我認為您描述的方法對我來說似乎更自然。 (對於公司有一個查詢/光標,對於服務有另一個查詢/光標)
您可以使用一個查詢來准備以下列表:
谷歌搜索
Google,日歷
谷歌郵件
谷歌地圖
雅虎,搜索
雅虎郵箱
...
(為簡單起見,我省略了ID)
然后,您遍歷該列表,每次公司更改時,您都會開始一個新的結果行。 我發現這比您描述的方法要復雜一些。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.