Seite 1 von 1

[gelöst] Richtige SQL-Abfrage für richtige Ausgabe "mit/ohne leeres Feld"

Verfasst: Di 19. Dez 2017, 16:33
von HansGerstenkorn
Hallo,

ich plage mich mit einer richtigen SQL-Formulierung herum und komme irgendwie nicht weiter. Die Beiträge mit der Diskussion um IFNULL verwirren micht eigentlich nur, denn ich versuche zwar "wenn - dann" zu formulieren, bekomme aber immer Fehlermeldungen. Es wäre toll, wenn mir jemand einmal in meine Formel ein Beispiel für das Feld "Bereich-ID" einbauen kann, vielleicht kann ich das dann nachvollziehen und dann für andere Felder auch passend einbauen.

Auch wenn ich die Überarbeitung vom Handbuch Base von Robert vom 16.12.17 durchforste, bekomme ich immer Syntaxfehler....

Was ich aber absolut nicht begreife ist, dass mir bei meiner Abfrage die Tabelle im Original angezeigt wird, obwohl das Feld "Bereich-ID" leer ist, hier die SQL-Formel:

Code: Alles auswählen

SELECT "Status_Meldungen"."ID" AS "ID", "Status_Meldungen"."Mitglied-ID" AS "Mitglied-ID", "Status_Meldungen"."Status-Jahr-ID" AS "Status-Jahr-ID", "Status_Meldungen"."Datum-Meldung" AS "Datum-Meldung", "Status_Meldungen"."Mitglied-Funktion" AS "Mitglied-Funktion", "Status_Meldungen"."Bereich-ID" AS "Bereich-ID", "Status_Meldungen"."erledigt-ID" AS "erledigt-ID", "Jahre"."Bezeichnung" FROM "Status_Meldungen", "Jahre" WHERE "Status_Meldungen"."Status-Jahr-ID" = "Jahre"."ID" ORDER BY "Jahre"."Bezeichnung" DESC
Sowie ich aber in der grafischen Oberfläche die Tabelle "Bereich" hinzufüge, ohne in der Abfrage eine Spalte aus dieser Tabelle einzufügen, erhalte ich keine Ausgabe. Hier die SQL-Abfrage dafür:

Code: Alles auswählen

SELECT "Status_Meldungen"."ID" AS "ID", "Status_Meldungen"."Mitglied-ID" AS "Mitglied-ID", "Status_Meldungen"."Status-Jahr-ID" AS "Status-Jahr-ID", "Status_Meldungen"."Datum-Meldung" AS "Datum-Meldung", "Status_Meldungen"."Mitglied-Funktion" AS "Mitglied-Funktion", "Status_Meldungen"."Bereich-ID" AS "Bereich-ID", "Status_Meldungen"."erledigt-ID" AS "erledigt-ID", "Jahre"."Bezeichnung", "Bereich"."Bezeichnung" FROM "Status_Meldungen", "Jahre", "Bereich" WHERE "Status_Meldungen"."Status-Jahr-ID" = "Jahre"."ID" AND "Status_Meldungen"."Bereich-ID" = "Bereich"."ID" ORDER BY "Jahre"."Bezeichnung" DESC
Vielen Dank für Eure Hinweise :-) Hans

PS für Robert: Ich bin sicher immer noch zusehr Anfänger um Deine Erklärungen immer umsetzen zu können :-(

Re: Richtige SQL-Abfrage für richtige Ausgabe "mit/ohne leeres Feld"

Verfasst: Di 19. Dez 2017, 16:57
von RobertG
Hallo Hans,

wenn Du eine Tabelle mit einer anderen verknüpfst und in der anderen Tabelle ist kein entsprechender Datensatz zu finden, dann bleibt das Ergebnis leer.

Hast Du ein leeres Feld in der ersten Tabelle, so entspricht dem eben nicht ein leeres Feld in der zweiten Tabelle. Wenn ich Dich richtig verstehe, dann erwartest Du bei leeren Feldern aber, dass alle Datensätze mit leeren Feldern wiedergegeben werden. Das Geht nur zusätzlich zu den anderen Feldern:

Code: Alles auswählen

 ... AND ("Status_Meldungen"."Bereich-ID" = "Bereich"."ID" OR "Status_Meldungen"."Bereich-ID" IS NULL)
Damit hast Du dann immer alle Felder angezeigt, die keine Bereich-ID haben - auch wenn andere Felder angezeigt werden.

Gruß

Robert

Re: Richtige SQL-Abfrage für richtige Ausgabe "mit/ohne leeres Feld"

Verfasst: Mi 20. Dez 2017, 10:14
von HansGerstenkorn
Hallo Robert,

wie immer, eigentlich ganz einfach! Vielen Dank Für Deinen Hinweis auf die Beziehungen, dass sie natürlich wie 1 Dokument im Ergebnis dargestellt werden und die Formel kann ich jetzt auch nachvollziehen, irgendwie hatte ich damit ein Problem, denn in Calc komme ich selbst mit verschachtelten WENN-Bedingungen zurecht, hier hatte ich aber Probleme.

Vielen Dank also noch einmal für die besondere Darstellung und Hilfe und eine schöne geruhsame Weihnachtszeit :-))) Hans

Nachtrag: Da habe ich jetzt aber einiges aufzuarbeiten in anderen DB, habe so das Gefühl, als ob mich da auch noch einige Überraschungen erwarten....