Blockade beim SELECT-Statement
RainerT
- datenbank
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
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