Mailinglisten-Archive |
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