❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

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

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
HansGerstenkorn
Beiträge: 137
Registriert: Sa 17. Sep 2016, 18:31

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

Beitrag von HansGerstenkorn » Di 19. Dez 2017, 16:33

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 :-(
Dateianhänge
Abfrage_ohne_Bereich.jpg
Abfrage_ohne_Bereich.jpg (98.11 KiB) 2679 mal betrachtet
Abfrage_mit_Bereich.jpg
Abfrage_mit_Bereich.jpg (100.93 KiB) 2679 mal betrachtet
Zuletzt geändert von HansGerstenkorn am Mi 20. Dez 2017, 10:14, insgesamt 1-mal geändert.
MacBook Pro = LO Version: 6.2.3.1; CPU-Threads: 8; BS: mac OS Mojave Version 10.14.4;

Lenovo T430S; Intel Core i5-3320M CPU @ 2.60 GHZ, 2601 MHz, 2 Kerne, LO Version: 6.0.2.1 (x64); Microsoft Windows 10 Pro; 10.0.16299;

RobertG
* LO-Experte *
Beiträge: 2888
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

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

Beitrag von RobertG » Di 19. Dez 2017, 16:57

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
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

HansGerstenkorn
Beiträge: 137
Registriert: Sa 17. Sep 2016, 18:31

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

Beitrag von HansGerstenkorn » Mi 20. Dez 2017, 10:14

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....
MacBook Pro = LO Version: 6.2.3.1; CPU-Threads: 8; BS: mac OS Mojave Version 10.14.4;

Lenovo T430S; Intel Core i5-3320M CPU @ 2.60 GHZ, 2601 MHz, 2 Kerne, LO Version: 6.0.2.1 (x64); Microsoft Windows 10 Pro; 10.0.16299;


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten