Der folgende Beitrag wurde am 10. 01. 2004, 20:00 Uhr von Tobias veröffentlicht.
Ich habe drei Tabellen:
Alle Verknüpfungen Von Benutzer und Gruppen ID's:
user_grp
------------
id
fk_user
fk_grp
Alle Gruppen:
grp
-------------
id
name
Alle Verknüpfungen Von Gruppen und deren zugelassene Seiten:
seite_grp
-------------
id
fr_seite
fk_grp
Ich habe einen bestimmten Benutzer (user) auf einer bestimmten Seite (seite).
Wie bekomme ich mit einer SQL-Abfrage alle Gruppen die sowohl auf die Seite wie auch auf den Benutzer zutreffen?
Ich bin noch nicht sehr routiniert mit SQL. Bitte darum um Verständniss wenn die eine Stupiede Aufgabe war.
mfg Tobias
Der folgende Beitrag wurde am 10. 01. 2004, 20:12 Uhr von André Laugks veröffentlicht.
Hallo!
> Ich habe einen bestimmten Benutzer (user) auf einer bestimmten Seite (seite).
> Wie bekomme ich mit einer SQL-Abfrage alle Gruppen die sowohl auf die Seite wie auch auf den Benutzer zutreffen?
Welche Spalte hängt mich welcher Spalte zusammen?
MfG, André Laugks
--
L-Andre @ gmx.de
Der folgende Beitrag wurde am 10. 01. 2004, 20:17 Uhr von Tobias veröffentlicht.
Alle Verknüpfungen Von Benutzer und Gruppen ID's:
user_grp
------------
id
fk_user
fk_grp
Alle Gruppen:
grp
-------------
id
name
Alle Verknüpfungen Von Gruppen und deren zugelassene Seiten:
seite_grp
-------------
id
fr_seite
fk_grp
Ich habe fk_seite und fk_user. Die grp.id hangt mit der user_grp.fk_grp und der seite_grp.fr_grp zusammen.
Verständlich?
Der folgende Beitrag wurde am 10. 01. 2004, 21:17 Uhr von André Laugks veröffentlicht.
Hallo!
> Ich habe fk_seite und fk_user. Die grp.id hangt mit der user_grp.fk_grp und der seite_grp.fr_grp zusammen.
>
> Verständlich?
Mhhh, mal sehen...
SELECT g.id, g.fk_user, g.fk_grp FROM
grp AS g
INNER JOIN
user_grp AS u ON (g.id=user_grp.fk_grp)
INNER JOIN
seite_grp AS s ON (g.id=s.fr_grp);
Eventuell wird Du noch Gruppieren müßen.
Schaue Dir auch bitte in der Doku, ich nehme an Du verwendest MySQL, JOINs an.
http://www.mysql.de/doc/de/JOIN.html
MfG, André Laugks
--
L-Andre @ gmx.de
Der folgende Beitrag wurde am 11. 01. 2004, 01:51 Uhr von Tobias veröffentlicht.
Danke für die Bemühungen. Auch für den Link.
weiterhin ein gutes Neues
Der folgende Beitrag wurde am 10. 01. 2004, 21:17 Uhr von Ilja veröffentlicht.
yo,
> Wie bekomme ich mit einer SQL-Abfrage alle Gruppen die sowohl auf die Seite wie auch auf den Benutzer zutreffen?
SELECT grp.id, grp.name
FROM grp, seite_grp, user.grp
WHERE grp.id = seite_grp.fr_grp AND user_grp.fk_grp = grp.id AND
(user_grp.fk_user = der_aktuelle_user AND/OR seite_grp.fr_seite = seite_des_user);
das AND/OR musst du auflösen, je nachdem ob beide bedingungen wahr sein sollen oder eine reicht.
man könnte die id in der user_grp und seite_grp auch weglassen und den primary key über die zwei spalten bilden. aber das ist geschmackssache.
Ilja
Der folgende Beitrag wurde am 11. 01. 2004, 01:48 Uhr von Tobias veröffentlicht.
Herzlichen Dank, es hat tatsächlich funktioniert!
Der folgende Beitrag wurde am 11. 01. 2004, 02:02 Uhr von Tobias veröffentlicht.
Bitte noch eine Antwort!
> SELECT grp.id, grp.name
> FROM grp, seite_grp, user.grp
> WHERE grp.id = seite_grp.fr_grp AND user_grp.fk_grp = grp.id AND
> (user_grp.fk_user = der_aktuelle_user AND/OR seite_grp.fr_seite = seite_des_user);
Ich war fast so weit, habe aber abgekürtzt:
->WHERE grp.id = seite_grp.fr_grp = user_grp.fk_grp
Wieso geht das nicht?
mfg
Tobias
Der folgende Beitrag wurde am 11. 01. 2004, 10:03 Uhr von Ilja veröffentlicht.
yo,
> ->WHERE grp.id = seite_grp.fr_grp = user_grp.fk_grp
>
> Wieso geht das nicht?
ist ganz einfach syntaktisch falsch. eine bedingung hat ein linkes und ein rechtes argument und einen operator in der mitte. in deinem falle wäre einen argument zugleich rechtes und linkes argument. das geht zwar in vielen fällen der programmierung, nicht aber bei sql. dort musst du mehrere bedigungen durch einen logischen Operator wie AND oder OR verbinden.
Ilja
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4