Seite 1 von 2

MySQL Befehl gesucht

Verfasst: 19.11.2003 01:49
von Siegem Metatron
Hallo :)

Bin auf der suche nach einem Umfassenden Befehl.
Möchte mir alle personen auflisten lassen die Zugriff auf ein bestimmtes Forum haben, und kein Mitglied einer Gruppe sind welche zugriff auf dieses Forum hat.

Bekomme so alle Group IDs raus die "Lesen" dürfen in mein Forum Nr.74:

Code: Alles auswählen

SELECT group_id
FROM phpbb_auth_access
WHERE forum_id = '74' AND auth_read = '1' 
Alle hier aufgelisteten group_ids müssten jetzt nur noch verglichen werden in der phpbb_groups
Wenn die group_id aus der auth_access ein group_single_user="1" in der phpbb_groups besitzt. So müsste doch das was übrig bleibt, eine Menschliche group_id sein welche Zugriff auf dieses Forum besitzt ohne einer Gruppe angehörig zu sein die zugriff auf das Forum hat?

Mein Gedanke weitergestrickt:

Code: Alles auswählen

SELECT f.group_id
FROM phpbb_auth_access f, phpbb_groups s
WHERE f.forum_id='74' AND f.auth_read ='1' AND s.group_single_user='1'
Leider ist das Ergebnis etwas recht merkwürdig.
Hat jemand von euch eine Idee wie man hier zu einen einzigen MySQL Befehl kommt der einen alle Beschriebenen Group_id´s anzeigen soll ?

Grüße ;)

Verfasst: 19.11.2003 09:53
von PhilippK
Wenn du die IDs der berechtigten User haben willst, musst du die auth_acess- mit der groups-, diese dann mit der user_group- und die dann zu guter Letzt mit der users-Tabelle in Beziehung bringen. Dafür gibt's i.d.R. bei SQL einen (INNER) JOIN-Befehl.

Gruß, Philipp

Verfasst: 19.11.2003 13:01
von Siegem Metatron
genau :) das ist mein ziel.

Doch nicht ganz so schnell ;) immer hübsch schritt für Schritt.
Die group_id´s reichen erst mal schon aus. Da man doch alle überig gebliebenen group_id´s mit den user_id´s gleichsetzen kann.

Dennoch funktioniert diese "abgespreckte" version ja bereits schon nicht. Hm....

Verfasst: 19.11.2003 15:36
von PhilippK
Siegem Metatron hat geschrieben:Da man doch alle überig gebliebenen group_id´s mit den user_id´s gleichsetzen kann.
Was willst du???
Schau dir den JOIN-Befehl von SQL an - so bekommst du das am einfachsten hin...

Gruß, Philipp

Verfasst: 20.11.2003 23:13
von Siegem Metatron
Naja war ja schon dicht drann. Also gut mit einem ordentlichen Join eben.

Code: Alles auswählen

SELECT  * 
FROM phpbb_auth_access f, phpbb_groups s
WHERE f.group_id = s.group_id AND f.forum_id =  '74' AND f.auth_read =  '1' AND s.group_single_user =  '1'
Bitte korrigier mich, wenn das nu doch kein ordentlicher join war :D

Bin mir noch nicht sicher.
Das ergebnis ist schon verdammt dicht an dem was ich sehen möchte.
2 seltsame group_id´s machen mir noch einen Strich durch die Rechnung.

Kann es sein, das jemand in der phpbb_auth_access zu stehen hat das er Zugriff hätte, obwohl er gar keinen Zugriff hat?

Verfasst: 20.11.2003 23:18
von PhilippK
Siegem Metatron hat geschrieben:Bitte korrigier mich, wenn das nu doch kein ordentlicher join war :D
Es ist ein nettes Hilfskonstrukt - mehr nicht ;-)
Siegem Metatron hat geschrieben:Das ergebnis ist schon verdammt dicht an dem was ich sehen möchte.
2 seltsame group_id´s machen mir noch einen Strich durch die Rechnung.
Du erhälst nun die IDs der Einbenutzergruppen, die Zugriff auf das Forum haben.
Siegem Metatron hat geschrieben:Kann es sein, das jemand in der phpbb_auth_access zu stehen hat das er Zugriff hätte, obwohl er gar keinen Zugriff hat?
???

Gruß, Philipp

Verfasst: 20.11.2003 23:54
von Siegem Metatron
*irritierende Behauptungen editiert und gelöscht*

Verfasst: 21.11.2003 00:19
von PhilippK
Ich glaube, du verwechselst da etwas: die Gruppen-ID bei Einbenutzergruppen ist nur in wenigen Fällen mit der ID des entsprechenden Users identisch (es ist in diesen Fällen reiner Zufall). Du kommst also um eine Auflösung über die user_group-Tabelle nicht herum

Gruß, Philipp

Verfasst: 21.11.2003 00:55
von Siegem Metatron
Stimmt, war eine böse verwechslung.

Nehme ich nun die User Tab nun hinzu Hm...

Code: Alles auswählen

SELECT  u.username
FROM phpbb_auth_access f, phpbbl_groups s, phpbb_users u
WHERE f.group_id = s.group_id = u.user_id AND f.forum_id =  '74' AND f.auth_read =  '1' AND s.group_single_user =  '1';
bekomm ich erst recht seltsame Ergebnisse.
Vielleicht kann man diese tabellen nicht gleichsetzen. Da die goup_id nicht unbedingt die user_id ist.

Ich könnt wetten, irgentwer hat bestimmt sowas ähnliches schon mal versucht. ich habe direkt vor mir auflisten zu lassen wer alles auf ein Forum Zugriff hat 8) Mit bedingung , derjenige gehört keiner gruppe an die Zugriff auf das Forum hat.

Verfasst: 21.11.2003 01:10
von PhilippK
Mal als kleine Frage vorweg: ist das nur für private Zwecke oder soll das in 'nen Mod oder so einfließen?

Gruß, Philipp