phpbar.de logo

Mailinglisten-Archive

Ich stehe auf dem Schlauch :-(

Ich stehe auf dem Schlauch :-(

Enrico Saenz mysql-de_(at)_lists.bttr.org
Wed, 9 Oct 2002 14:15:10 +0200


Hallo Sven

>> Danach habe ich eine Art Zugehörigkeitstabelle, wo drin steht, wer was
>> darf (nenne ich ztabelle):
>> 
>> id, inhalts-id, gruppenid, lesen, schreiben, loeschen

SM> Ich bin mir ja nicht sicher, ob es nur mir so geht, aber ich verstehe
SM> Dein Problem nicht so recht. Welche Felder gibt es in welcher Tabelle,
SM> welche stellen Verknüpfungen da (welche Art von Verknüpfung) und vor
SM> allem: Was genau versuchst Du mit Deiner Query zu erreichen bzw. was
SM> funktioniert an der von Dir genannten Query noch nicht so, wie Du es
SM> Dir vorstellst?
Es ist auch etwas "kompliziert", oder auch einfach nur zu umständlich
von mir, ich habe vorrübergehend eine Lösung gefunden, welche aber mir
nicht gefällt.

Im Kern habe ich
a) Inhaltstabelle (hier nicht so wichtig)
b) Gruppentabelle (user und gruppenzugehörigkeit sind abgetrennt, jew.
2 weitere Tabellen)
c) Tabelle welche die Rechte für den jeweiligen Inhalt verzeichnet
hat.

Ich mach das jetzt mal mit Beispieldaten :) Die Inhaltsid nehme ich
meistens vom Script oder eben aus der Tabelle für die Inhalte, der
Bezug ist an sich nicht das Problem.

Gruppentabelle:
id, name
1, Gäste
2, Besucher
3, Moderatoren

Rechtetabelle (spalte habe ich jeweils mit Komma getrennt, ich hoffe
du steigst durch.

id, inhaltsid, gruppenid, lesen, schreiben, loeschen
1,  1,         2,         1,     0,         0

2,  2,         1,         1,     0,         0
3,  2,         2,         1,     0,         0
4,  2,         3,         1,     1,         0

Auf Deutsch:
Bei Inhalts-ID 1 haben nur Besucher das Leserecht, die nicht
aufgeführten Gruppen haben garkeine Rechte (Gäste und Moderatoren)

Bei Inhalts-ID 2 sind alle Gruppen vorhanden, also Gäste und Besucher
haben Leserecht, die Moderatoren darüberhinaus noch Schreibrecht.

Und meine Frage an die Datenbank soll lauten: Nenne mir die Gruppen,
welche bei der Inhalts-ID 1 NICHT genannt sind; DB müsste also Gäste
und Moderatoren ausspucken. LEFT OUTER JOIN schlägt hier nicht an, da
bei der Inhalts-ID 2 Gäste und Moderatoren schon vorhanden sind. Die
Inhalts-ID ist wichtig, weil sie den Bezug zum jeweiligen Inhalt
darstellt.

Meine Zwischenlösung ist zur Zeit:
Wird ein Inhalt angelegt, wird in die Rechtetabelle alle Gruppen die
es gibt eingetragen. Und wenn eine neue Gruppe angelegt wird, wird
diese bei allen Inhalten hinzugefügt.

Aber das kann doch keine Lösung sein :-( Viel zu aufwendig, umständig
und schlichtweg zu "teuer".

Danke für deine Antwort, ich hoffe, du bist jetzt etwas schlauer
daraus geworden.

SM> Woher kommt $inhaltsid ? Was willst Du mit der letzten Zeile
SM> erreichen? Ist der LEFT JOIN überhaupt nötig?
Ich wollte es mit einem LEFT OUTER JOIN versuchen, ging auch nicht

Man liest sich

Enrico

---
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 



php::bar PHP Wiki   -   Listenarchive