dedlfix: Mal wieder eine SQL-Join-Hirnverknotung..

Beitrag lesen

Tach!

Also im Prinzip sowas:
[...]
Geht das grundsätzlich so?

Im Prinzip ja, wobei dein Code aber noch nicht über die Gruppen iteriert. Es ist aber unschön, weil pro User und Gruppe eine eigene Query abgesetzt wird. Das kostet.

Hat jemand einen Rat wie die zweite Abfrage aussehen kann, bzw wie ich das mit einem Join hinbekomme? Oder gibt es eine noch schlauere Methode?

Ich nähme drei einfache, ungejointe Querys auf jede der Tabellen. Die Ergebnisse kommen erstmal in je ein Array. Das für die Zugehörigkeiten würde ich so aufbauen:

$ug = array(
    uid1 => array(gid1 => id1, gid2 => id2),
    uid2 => array(gid2 => id3),
    uid3 => array(gid2 => id4, gid3 => id5)
  );

Statt uidX, gidX und idX stehen da natürlich die Werte deiner users_groups-Tabelle. Das Beispiel orientiert sich an deinen Beispieldaten. Zum Ausgeben iterierst du über alle User und pro User jeweils über alle Gruppen. Dann kannst mit isset($ug[$user['id']][$group['id']]) ermitteln, ob der User in der Gruppe enthalten ist oder nicht. $user und $group sind die jeweiligen Laufvariablen der User- und der Gruppenschleife und enthalten damit einen User- beziehungsweise Gruppendatensatz. Die idX-Werte werden für die Frage nach der Mitgliedschaft nicht benötigt. Wenn du sie auch für andere Zwecke nicht benötigst, kannst du da auch true oder irgendwas anderes (außer null) nehmen.

dedlfix.