2011-02-04 74 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

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

如何做到这一点,而不使用函数..我不知道:-)。

相关问题