RainerT: Blockade beim SELECT-Statement

Hallo Selfianer/-innen,

ich habe eine Denkblockade bei einem etwas komplexeren SQL-Statement.
Ich habe folgende Tabellen:
tabellenname: objekt1
felder: id,titel

tabellenname: objekt2
felder,id,obj1_id,titel

tabellenname:objekt1_rechte
felder:id,gruppe_id,recht

tabellenname:objekt2_rechte
felder:id,gruppe_id,recht

Die Einträge in objekt2 sind "Kinder" der Tabelle objekt1. Jetzt möchte ich nur die Einträge anzeigen, wo das Feld "recht" den Inhalt 1 besitzt. Dabei soll das bei objekt1 gesetzte "recht" Feld aber höher bewertet werden als das bei objekt2.

Beispiel:
für objekt2.id=1 ist das Feld "recht" auf 1 gesetzt und als obj1_id = 1.
Bei objekt1.id=1 ist aber das Feld "recht" mit 0 befüllt. Dann sollen die objekt2 Einträge nicht ausgegeben werden, da das gesetzte "recht"-Feld für objekt1 das für objekt2 übersteuert.

Ist das Problem verständlich oder habe ich mich jetzt zu kompliziert ausgedrückt? :-(

Vielen Dank schon mal im Vorraus für Tipps, wie ich die Abfrage hinbekommen kann.

Gruß,
RainerT

  1. Hallo Rainer,

    es wäre eine gute Idee, Dein Datenbankdesign zu überdenken.

    tabellenname: objekt1
    tabellenname: objekt2

    wenig aussagekräftige Tabellennamen, die Untergliederung in zwei Tabellen ist fragwürdig.

    tabellenname:objekt1_rechte
    felder:id,gruppe_id,recht
    tabellenname:objekt2_rechte
    felder:id,gruppe_id,recht

    Diese zwei Tabellen wollen eine einzige sein.

    Die Einträge in objekt2 sind "Kinder" der Tabelle objekt1. Jetzt möchte ich nur die Einträge anzeigen, wo das Feld "recht" den Inhalt 1 besitzt. Dabei soll das bei objekt1 gesetzte "recht" Feld aber höher bewertet werden als das bei objekt2.

    Was soll bei 1 beim Recht für objekt1 und 0 beim Recht für objekt2 passieren?
    Ein paar Beispieldatensätze und das gewünschte Ergebnis inklusive der Begründung für das Ergebnis hilft beim Verständnis ungemein.

    Freundliche Grüße

    Vinzenz