SELECT-Anseisung gesucht
Tobias
- datenbank
0 André Laugks0 Tobias0 André Laugks0 Tobias
0 Ilja
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
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
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?
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
Danke für die Bemühungen. Auch für den Link.
weiterhin ein gutes Neues
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
Herzlichen Dank, es hat tatsächlich funktioniert!
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
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