2011-02-04 93 views
1

所以,我有這兩個表:做兩個SELECT查詢,與第二查詢相關的第一,第二的成績被串聯在一個

+----------+ +---------------+ 
|tGathering| |tGatheredPeople| 
+----------+ +---------------+ 
|cId  | |cGatheringID | 
|cPlace | |cPeople  | 
|...  | +---------------+ 
+----------+ 

我想在一個選擇查詢檢索數據關於一個地方的聚會(比如「德國柏林」)以及價值觀之間的關係,將會是一個由所有在場的人組成的逗號分隔的字符串。

是否有可能在一個查詢中做到這一點?如果是的話,我們如何稱呼這種查詢(正如你可能已經注意到的,我在定義我所搜索的內容時遇到困難)?

+0

只是出於好奇,爲什麼你串concat'ing第二的價值觀? SQL在處理集合方面非常出色,但對於字符串concat之類的東西並不那麼好。你最好將列表導出爲PHP之類的東西,然後在forloop中回顯。 – jcolebrand 2011-02-05 21:15:49

+0

@drachenstern:我想做一個連接,因爲我不知道你所描述的可能是可能的。你能詳細說明嗎? – Eldros 2011-02-07 08:17:59

回答

2

時退房GROUP_CONCAT function

一個例子用法是:

SELECT tGathering.*, GROUP_CONCAT(people.cPeople SEPARATOR ',') FROM tGathering 
INNER JOIN tGatheredPeople AS people ON `people`.cGatheringID=`tGathering`.cId 
GROUP BY people.cGatheringID 
0

是的,只要您在適用於每個地點Id的函數中準備PeopleByPlaceId列表,就可以在一個查詢中執行此操作。 喜歡的東西:

Select t.*, PeopleByPlaceId(t.CId) as ListOfPeople

from TGathering t

在功能,您將建立人的名字的拼接列表。

如何做到這一點,而不使用函數..我不知道:-)。

相關問題