Выполнение двух запросов SELECT, причем второй запрос зависит от первого, а результат второго объединяется в один - PullRequest
1 голос
/ 04 февраля 2011

Итак, у меня есть две таблицы:

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

Я хочу в одном запросе выбора извлечь данные о сборах в одном месте (скажем, «Берлин, Германия»), и среди значений будетРазделенная запятыми строка всех людей, присутствующих на одном собрании.

Возможно ли сделать это одним запросом?И если да, то как можно вызвать запрос такого типа (как вы могли заметить, у меня возникли трудности с определением того, что я искал)?

Ответы [ 2 ]

2 голосов
/ 07 февраля 2011

Проверьте функцию GROUP_CONCAT

Пример использования будет:

SELECT tGathering.*, GROUP_CONCAT(people.cPeople SEPARATOR ',') FROM tGathering
INNER JOIN tGatheredPeople AS people ON `people`.cGatheringID=`tGathering`.cId
GROUP BY people.cGatheringID
0 голосов
/ 04 февраля 2011

Да, это можно сделать в одном запросе, если подготовить список PeopleByPlaceId в функции, которую вы примените к каждому идентификатору места. Что-то вроде:

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

from TGathering t

В этой функции вы создадите составной список имен людей.

Как это сделать без использования функции .. Я не знаю: -).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...