2009-10-02 2 views
0

У меня есть три таблицы.Mysql Несколько Concat Inner Join, дайте только имя

 
table1 = anlass 
table2 = stammdaten_beziehungen 
table3 = parameter_zuweisungen_anl 

Это Гав мне эту ошибку: подзапрос возвращает более чем на 1 строку

Но что мне нужно, это все «BeziehKuBez», разделенных запятыми в одной колонке.
например. Beziehname1, Beziehname2, ...

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

Update: Что касается Greg's answer:

GROUP_CONCAT() дает ситемы такой же вывод, как concat().

Только одно имя для «Превосходство». Но мне нужно, Несколько имен разделяются запятыми для одного «Anlass».

ТАБЛИЦА СТРУКТУРА:

Таблица Anlass:

AnlID, anlass_name

Таблица Stammdaten_beziehungen

BeziehID, Beziehkubez

Таблица Parameter_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 

ответ

1

Я думаю, что вы ищете 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

его же на выходе, только одно имя в строке. У меня есть таблица «parameter_zuweisung_anl» с идентификаторами от «anlass» и «Beziehung». "Beziehung" имеет столбец с именем. Это имя должно быть связано с «Превосходным». – Mahoni

+0

Вы сделали GROUP BY Anlass.AnlID? – Greg

+0

hi, thx for yor spended time;) это было не «WHERE ZuwAnlID = Anlass.AnlID», я исправил их. Это правильный вариант «WHERE ZuwAnlAnlNr = Anlass.AnlID». Но все же mysql дал мне ошибку вроде: Subquery возвращает более 1 строки. mhmm, ВСЕ или ЛЮБОЙ Не работает?! – Mahoni

0

С помощью Greg's answer я прибыл в это решение:

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