Mysql Multiple Concat Inner Join, только одно имя - PullRequest
0 голосов
/ 02 октября 2009

У меня есть три таблицы.

table1 = anlass 
table2 = stammdaten_beziehungen
table3 = parameter_zuweisungen_anl

Это дает мне эту ОШИБКУ: подзапрос возвращает более 1 строки

Но что мне нужно, так это запятая BeziehKuBez, разделенная на одну колонку.
например. Beziehname1, Beziehname2, ...

Если проверить это с CONCAT_WS(',', BeziehKuBez). Но дай мне то же самое. Могу ли я сделать это с помощью цикла while? Но я не знаю, как?!

Обновление: Относительно ответа Грега :

GROUP_CONCAT() дает тот же вывод, что и concat().

Только одно имя на "Anlass". Но мне нужно, несколько имен разделены запятой для одного "Anlass".

СТРУКТУРА СТОЛОВ:

Таблица Anlass:

AnlID, имя_класса

Таблица Stammdaten_beziehungen

BeziehID, Beziehkubez

Таблица параметров_zuweisung_anl

ZuwAnlID, ZuwAnlAnlNr, ZuwAnlBeziehID

INFO ZuwAnlAnlNr связан с Anlass.AnlID ZuwAnlBeziehID связан с Beziehung.BeziehID

Это мой запрос:

SELECT CONCAT(`BeziehKuBez`) AS Bezname
FROM `stammdaten_beziehungen` AS Beziehung, `anlass` AS anlass
    INNER JOIN `parameter_zuweisungen_anl` 
        ON  Beziehung.BeziehID = parameter_zuweisungen_anl.ZuwAnlBeziehID
WHERE ZuwAnlAnlNr = Anlass.AnlID

Ответы [ 2 ]

1 голос
/ 02 октября 2009

Я думаю, что вы ищете GROUP_CONCAT . Вы должны также сгруппировать что-то:

SELECT GROUP_CONCAT(BeziehKuBez) AS Bezname
FROM stammdaten_beziehungen AS Beziehung,
anlass AS anlass
INNER JOIN parameter_zuweisungen_anl ON Beziehung.BeziehID = parameter_zuweisungen_anl.ZuwAnlBeziehID
WHERE ZuwAnlID = Anlass.AnlID
GROUP BY ?
0 голосов
/ 02 октября 2009

С помощью ответа Грега Я пришел к этому решению:

SELECT  GROUP_CONCAT(BeziehKuBez) AS Ausgabe
    FROM `stammdaten_beziehungen` AS Beziehung
    INNER JOIN `parameter_zuweisungen_anl` ON  Beziehung.BeziehID = parameter_zuweisungen_anl.ZuwAnlBeziehID
    WHERE ZuwAnlAnlNr = Anlass.AnlID
    GROUP BY ZuwAnlAnlNr
...