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?
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.
Tags und Links mysql group-concat