BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 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) 2238 mal betrachtet
Abfrage_mit_Bereich.jpg
Abfrage_mit_Bereich.jpg (100.93 KiB) 2238 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
Beiträge: 2732
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 nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten