2009-10-02 5 views
0

J'ai trois tables.Mysql Multiple Concat Inner Join, ne donner qu'un seul nom

 
table1 = anlass 
table2 = stammdaten_beziehungen 
table3 = parameter_zuweisungen_anl 

Il me gaves cette erreur: plus de sous-requête renvoie 1 rang

Mais ce que je dois, est Virgule tous « BeziehKuBez » dans une colonne séparée.
par ex. Beziehname1, Beziehname2, ...

Si vous l'avez testé avec, CONCAT_WS(',', BeziehKuBez). Mais donne-moi le même. Pourrais-je faire cela avec une boucle while? Mais je ne sais pas comment ?!

Mise à jour: En ce qui concerne Greg's answer:

GROUP_CONCAT() donne-il même résultat que concat().

Un seul nom par "Anlass". Mais j'ai besoin, plusieurs noms séparés par des virgules pour un "Anlass".

TABLEAU STRUCTURE:

Tableau Anlass:

AnlID, anlass_name

Tableau Stammdaten_beziehungen

BeziehID, Beziehkubez

Tableau Parameter_zuweisung_anl

ZuwAnlID, ZuwAnlAnlNr, ZuwAnlBeziehID

INFO ZuwAnlAnlNr lié à Anlass.AnlID ZuwAnlBeziehID liés à Beziehung.BeziehID

Voici ma requête:

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 

Répondre

1

Je pense que vous cherchez GROUP_CONCAT . Vous devez également groupe par quelque chose:

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

Son la sortie même, un seul nom dans une rangée. J'ai une table "parameter_zuweisung_anl" avec les ID de "anlass" et "Beziehung". "Beziehung" a une colonne avec un nom. Ce nom doit être lié à "Anlass". – Mahoni

+0

avez-vous GROUP BY Anlass.AnlID? – Greg

+0

salut, merci pour votre temps passé;) ce n'était pas "WHERE ZuwAnlID = Anlass.AnlID" je les ai corrigés. C'est le bon "WHERE ZuwAnlAnlNr = Anlass.AnlID". Pourtant, mysql m'a donné une Erreur comme: Sous-requête renvoie plus de 1 ligne.Mhmm, ALL ou ANY Ne travaillez pas?! – Mahoni

0

Avec l'aide de Greg's answer je suis arrivé à cette solution:

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