执行两个SELECT查询,第二个查询依赖于第一个查询,第二个查询的结果连接在一个查询中

时间:2011-02-04 14:10:59

标签: mysql sql

所以我有两张桌子:

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

我希望在一个选择查询中检索一个地方的聚会数据(比如“柏林,德国”),并且在这些值中,将是一个逗号分隔的字符串,其中包含一个聚会中出现的所有人。

是否可以在一个查询中执行此操作?如果是的话,如何调用这种查询(你可能已经注意到,我在定义我要搜索的内容时遇到了困难)?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

是的,只要您在将应用于每个地点Id的函数中准备PeopleByPlaceId列表,就可以在一个查询中执行。 类似的东西:

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

from TGathering t

在函数中,您将构建人名的连接列表。

如何在不使用函数的情况下执行此操作..我不知道: - )。