richtige Sortierung im SQL-Statement

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Fice
Mitglied
Beiträge: 29
Registriert: 28.08.2003 15:21

richtige Sortierung im SQL-Statement

Beitrag 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]
Benutzeravatar
Banger
Ehemaliges Teammitglied
Beiträge: 375
Registriert: 03.05.2005 21:53
Wohnort: Düsseldorf
Kontaktdaten:

Re: richtige Sortierung im SQL-Statement

Beitrag 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
Zuletzt geändert von Banger am 22.12.2006 15:28, insgesamt 1-mal geändert.
Benutzeravatar
Fice
Mitglied
Beiträge: 29
Registriert: 28.08.2003 15:21

Beitrag 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.
Benutzeravatar
Banger
Ehemaliges Teammitglied
Beiträge: 375
Registriert: 03.05.2005 21:53
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag 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 :)
Benutzeravatar
Fice
Mitglied
Beiträge: 29
Registriert: 28.08.2003 15:21

Beitrag von Fice »

ahh, perfekt!

vielen dank für die Aufklärung.
Antworten

Zurück zu „Coding & Technik“