2009-10-02 67 views
0

我有三个表。Mysql多个Concat内部加入,只给一个名称

 
table1 = anlass 
table2 = stammdaten_beziehungen 
table3 = parameter_zuweisungen_anl 

这gaves我这个错误:子查询返回多个1行

,但我需要的,是所有“BeziehKuBez”逗号在一列隔开。
例如。 Beziehname1,Beziehname2,...

如果已经测试过,CONCAT_WS(',', BeziehKuBez)。但给我一样的。我可以用一段时间来做这个吗?但我不知道如何?!

更新: 关于Greg's answer

GROUP_CONCAT()给他相同的输出concat()

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

表结构:

表Anlass:

AnlID,anlass_name

表Stammdaten_beziehungen

BeziehID,Beziehkubez

表Parameter_zuweisung_anl

ZuwAnlID,ZuwAnlAnlNr,ZuwAnlBeziehID

信息 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”,ID是“anlass”和“Beziehung”。 “Beziehung”有一个名称列。 此名称必须链接到“Anlass”。 – Mahoni 2009-10-02 15:02:33

+0

您是否是GROUP BY Anlass.AnlID? – Greg 2009-10-02 15:19:56

+0

嗨,thx为你的时间加上;) 它不是“WHERE ZuwAnlID = Anlass.AnlID”我已经纠正它们。 这是正确的“WHERE ZuwAnlAnlNr = Anlass.AnlID”。 但是,MySQL给了我一个错误,如:子查询返回多于一行。 mhmm,ALL或ANY不工作?! – Mahoni 2009-10-02 15:30:58

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