Vinzenz Mai: Abfrage über mehrere zeilen zusammenfassen

Beitrag lesen

Hallo Andreas,

dann machst Du entweder etwas falsch oder nutzt nicht MySQL.
Bitte poste Dein Statement mit GROUP_CONCAT() und gib das von Dir verwendete

Hallo ok ich benutze mysql mit php5 und einbindung ueber mysqli und ich habe es so versucht

SELECT distinct tbl_Mitarbeiter.id, tbl_Mitarbeiter.Name,
    tbl_Mitarbeiter.Vorname, group_concat(tbl_Abteilungen.Name AS Abteilung)
    FROM tbl_Mitarbeiter, tbl_Abteilungen, tbl_Mitarb_Abt
    WHERE tbl_Mitarbeiter.id = tbl_Mitarb_Abt.FS_Mitarb
    AND tbl_Abteilungen.id = tbl_Mitarb_Abt.FS_Abt
    AND tbl_Mitarbeiter.EAN = '" . $kennung . "'");

ich versuche mal, Dein Statement lesbar und für mich verständlich zu gestalten. Dazu nutze ich die explizite Join-Syntax und Alias-Namen.

SELECT  
    m.id,  
    m.Name,  
    m.Vorname,  
    GROUP_CONCAT(a.Name) AS Abteilungen,  -- hier war was falsch  
FROM  
    tbl_Mitarbeiter m  
INNER JOIN tbl_Mitarb_Abt ma  
ON m.id = ma.FS_Mitarb  
INNER JOIN tbl_Abteilungen  
ON ma.FS_Abt = a.id  
WHERE m.EAN = '<irgendein wert>'  
GROUP BY                                  -- die Spalten nach denen gruppiert  
    m.id,                                 -- wird, sollte man nicht vergessen  
    m.Name,  
    m.Vorname  

sollte eigentlich das von Dir gewünschte zurückliefern.

Tipp: Teste SQL-Statements zuerst mit dem Client Deiner Wahl, z.B. phpMyAdmin
oder MySQL-Query-Browser oder was auch immer, bevor Du die Statements mit einer Programmiersprache wie PHP zusammenbaust.

Noch ein Tipp: Wenn Du schon mysqli verwendest, dann empfehle ich, dass Du Dir
den Luxus von prepared Statements gönnst:

http://www.php.net/manual/de/function.mysqli-stmt-prepare.php
http://www.php.net/manual/de/function.mysqli-stmt-bind-param.php
http://www.php.net/manual/de/function.mysqli-stmt-execute.php

und weitere dort verlinkte Funktionen

Freundliche Grüße

Vinzenz