Seite 1 von 1

richtige Sortierung im SQL-Statement

Verfasst: 22.12.2006 14:38
von Fice
Hi,

also, ich habe folgende Tabellen:

normale phpbb_groups Tabelle
normale phpbb_user Tabelle
normale phpbb_user_groups Tabelle
phpbb_br_groups mit folgenden Feldern:
- group_id
- gametype

So, in br_groups wird gespeichert, welche Gruppen zu br gehören.
Nun will ich auf einer Seite alle br-gruppen anzeigen und deren Mitglieder.

So sieht derzeit mein SQL-Statement aus

Code: Alles auswählen

SELECT g.group_name, g.group_moderator, g.group_description, bg.group_id, bg.gametype, u.username, u.user_id
     FROM phpbb_br_groups as bg, phpbb_groups as g, phpbb_user_groups as ug, phpbb_users as u
     WHERE bg.group_id = g.group_id AND bg.group_id = ug.group_id AND ug.user_id = u.user_id.
     ORDER by bg.group_id ASC
So, sieht die Seite derzeit aus: http://ncf119.eden3.netclusive.de/squad ... 4b272ba020

nur wie bekomme ich es nun hin, das der Squadleader(also der Gruppenadmin) ganz oben aufgeführt wird?

mfg
marcel[/code]

Re: richtige Sortierung im SQL-Statement

Verfasst: 22.12.2006 14:51
von Banger
Fice hat geschrieben:nur wie bekomme ich es nun hin, das der Squadleader(also der Gruppenadmin) ganz oben aufgeführt wird?
Ich nehme mal an, dass der Squadleader im Feld group_moderator eine 1 stehen hat? Dann so:

Code: Alles auswählen

SELECT g.group_name
     , g.group_moderator
     , g.group_description
     , bg.group_id
     , bg.gametype
     , u.username
     , u.user_id
  FROM phpbb_br_groups AS bg
     , phpbb_groups AS g
     , phpbb_user_groups AS ug
     , phpbb_users AS u
 WHERE bg.group_id = g.group_id 
   AND bg.group_id = ug.group_id 
   AND ug.user_id = u.user_id
 ORDER BY bg.group_id ASC, g.group_moderator DESC

Verfasst: 22.12.2006 15:10
von Fice
ne, so einfach ist es leider nicht, bei g.group_moderator ist die id des Moderators gespeichert.

sry, hab ich vergessen zu schreiben.

Verfasst: 22.12.2006 15:25
von Banger
Fice hat geschrieben:ne, so einfach ist es leider nicht, bei g.group_moderator ist die id des Moderators gespeichert.

sry, hab ich vergessen zu schreiben.
Äh klar, macht ja auch Sinn, hätte ich auch drauf kommen können, aber nach der gestrigen Weihnachtsfeier in der Firma ist meine Hirnleistung heute etwas eingeschränkt :)

Also, so geht's:

Code: Alles auswählen

SELECT g.group_name
     , g.group_moderator
     , g.group_description
     , bg.group_id
     , bg.gametype
     , u.username
     , u.user_id
  FROM phpbb_br_groups AS bg
     , phpbb_groups AS g
     , phpbb_user_groups AS ug
     , phpbb_users AS u
 WHERE bg.group_id = g.group_id 
   AND bg.group_id = ug.group_id 
   AND ug.user_id = u.user_id
 ORDER BY bg.group_id ASC, g.group_moderator = u.user_id DESC
Erklärung: "g.group_moderator = u.user_id" ergibt 1, wenn beide übereinstimmen, ansonsten 0 - danach absteigend sortiert, hat man den Moderator also an erster Stelle :)

Verfasst: 22.12.2006 16:06
von Fice
ahh, perfekt!

vielen dank für die Aufklärung.