У меня есть три таблицы. TB_Main - это таблица сущностей. TB_BoardMembers - таблица людей. TB_BoardMembersLINK - это таблица мостов, которая ссылается на два других идентификаторами, а также имеет даты начала и окончания, когда Person находился на борту Entity. Эти даты часто являются неполными.Использование GROUP_CONCAT
Мне было предложено экспортировать как часть отчета CSV с одной строкой на каждый объект в год, в котором у меня есть список членов совета за тот год с их занятиями в одном поле, ограниченном символами новой строки.
Мне не нужен bml.Entity в результате, но добавил его, чтобы попытаться отладить. Я получаю одну строку, где ожидаю 85. Пробовал с GROUP BY и без нее, и тот факт, что результат тот же, говорит о том, что я злоупотребляю GROUP_CONCAT. Как я должен построить это, чтобы получить желаемый результат?
SELECT
GROUP_CONCAT(
DISTINCT CONCAT(bm.First, ' ', bm.Last,
IF (bm.Occupation != '', ' - ', ''),
bm.Occupation) SEPARATOR "\n") as Board,
bml.Entity
FROM
TB_Main arfe,
TB_BoardMembers bm,
TB_BoardMembersLINK bml
WHERE YEAR(bml.start) <= 2011
AND (YEAR(bml.end) >= 2011 OR bml.end IS NULL)
AND bml.start > 0
AND bml.Entity = arfe.ID
GROUP BY bml.Entity
ORDER BY Board
ИМХО проблема не с 'GROUP_CONCAT', а с ненадлежащим JOIN и. – peterm