MySQL Group_Concat Wiederholungswerte

8

Ich arbeite an einem Open-Source-Projekt namens PHP-Bouncer , mit dem ich Probleme habe eine MySQL Query, für die ich schreibe. Grundsätzlich haben wir drei Tabellen: BouncerRoles, PageInRole und BouncerPageOverrides. BouncerRoles enthält Zugriffsebenen und die anderen beiden Tabellen sind über Foreign Key mit BouncerRoles verbunden und bieten mehrere Einträge mit zusätzlichen Daten. Ich habe die folgende Abfrage geschrieben, um zu versuchen, alle Rollendaten, die ich brauche, auf einmal zu ziehen:

%Vor%

Das Ziel dieser Abfrage besteht darin, die Rollen-ID, den Rollennamen, eine durch Pipe getrennte Liste von bereitgestellten Seiten und eine durch Pipe getrennte Liste von Außerkraftsetzungen (in Form von überschriebener Seite und übergreifender Seite) bereitzustellen. Alles funktioniert bis auf die letzte Spalte der Abfrage, die die gefundenen Einträge wiederholt wiederholt (Ausgabe im CSV-Format):

%Vor%

Gibt es etwas, das ich in meiner Anfrage falsch gemacht habe, um dies zu verursachen?

    
Brendon Dugan 14.07.2012, 18:25
quelle

1 Antwort

22

Sie treten wahrscheinlich einer Tabelle mit zwei Tabellen in 1..n-Beziehungen bei und erzeugen doppelte Ergebnisse.

  • Verwenden Sie entweder GROUP_CONCAT( DISTINCT ...) oder

  • Verwenden Sie zwei Unterabfragen: Verwenden Sie in jeder Tabelle GROUP_CONCAT() mit Gruppe by für jede der beiden Tabellen. Fügen Sie dann die beiden Unterabfragen und die Haupttabelle hinzu.

ypercubeᵀᴹ 14.07.2012, 18:38
quelle

Tags und Links