MySQL, объединяющий один ко многим в один ряд - PullRequest
3 голосов
/ 08 марта 2012

У меня есть настройка таблицы один ко многим.Я хочу присоединиться к таблицам, но вместо того, чтобы он возвращал несколько строк, показывающих различные комбинации, я хочу, чтобы он возвращал 1 строку с 3 полями, по одному для каждой строки из таблицы много.

Data:
dataID (primary key),
other data,
other data,
other data

Codes:
codeID,
dataID (foreign key),
codeValue

Ожидаемый вывод: dataID, codeValue1, codeValue2, codeValue3

1 Ответ

1 голос
/ 08 марта 2012
select concat(DataID,',',CodeValues) ExpectedOutput from
(
    select A.dataID,GROUP_CONCAT(B.codeValue ORDER BY B.codeID) CodeValues
    from (select dataID from Data) A
    inner join Codes B using (dataID) group by A.dataID
) AA;

Убедитесь, что у вас есть этот составной индекс

ALTER TABLE Codes ADD INDEX data_code_ndx (dataID,codeID,codeValue);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...