Mysql Multiple Concat Inner Join,只给一个名字

时间:2009-10-02 14:41:59

标签: mysql sql mysql-error-1242

我有三张桌子。

table1 = anlass 
table2 = stammdaten_beziehungen
table3 = parameter_zuweisungen_anl

它给了我这个错误:子查询返回超过1行

但我需要的是,所有'BeziehKuBez'逗号分隔在一栏中 例如。 Beziehname1,Beziehname2,......

如果使用CONCAT_WS(',', BeziehKuBez)进行测试。但是给我一个同样的。我可以用while循环吗?但我不知道怎么样?!

更新 关于Greg's answer

GROUP_CONCAT()提供与concat()相同的输出。

每个“Anlass”只有一个名字。但我需要,为一个“Anlass”分隔多个名称逗号。

表格结构:

表类:

AnlID,anlass_name

表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 个答案:

答案 0 :(得分: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 ?

答案 1 :(得分: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