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] Suche mit coalesce

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Pit Zyclade
Beiträge: 2674
Registriert: Mo 12. Nov 2012, 16:59

[gelöst] Suche mit coalesce

Beitrag von Pit Zyclade » Sa 8. Okt 2022, 16:45

Hallo,

Bin wieder mal am "Schwitzen", weil ich in meiner Welt den Kern von Coalesce nicht begriffen habe.
@RobertG hatte mir im Sommer geholfen, ein Formular mit einer Suche auszustatten.
Nun wollte ich meine Erfahrung auf eine andere Datenbank übertragen. Im Inhalt ähnlich wird also eine Filtertabelle angelegt und eine Abfrage mit SQL-Befehlen ausgestattet (und natürlich getestet). Die SQL-Formulierung lautet:
SELECT "xxx"."*" FROM "xxx" WHERE ........ AND ( ( LOWER ( "Serie" ) LIKE '%' || COALESCE ( ( SELECT LOWER ( "SucheSerie" ) FROM "Filter" WHERE "Filter"."ID" = TRUE ), '' ) || '%' ) ) ......

Technisch alles korrekt. Wenn ich nun in der Tabelle Filter im Feld "SucheSerie" eingebe:
"Lieblingsmärchen", dann habe ich kein Resultat, aber wenn ich dort eingebe
" Lieblingsmärchen", also mit einer Leerstelle am Anfang, dann funktioniert das Filter korrekt.
Im durchsuchten Datensatz steht im betreffenden Feld "Die Lieblingsmächen ....".
Warum muß man ein Leerzeichen vor dem gesuchten Wort eingeben ?
Kann man diese Unlogik umschiffen ?

Besten Dank für eine Anregung!
Zuletzt geändert von Pit Zyclade am So 9. Okt 2022, 17:10, insgesamt 1-mal geändert.
LO 7.5.8.2 (X86_64) / AOO 4.1.14 / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Suche mit coalesce

Beitrag von RobertG » Sa 8. Okt 2022, 21:22

Hallo Pit,

von der Abfrage her ist das so nicht erklärbar. Wenn da statt

Code: Alles auswählen

LIKE '%' ||

Code: Alles auswählen

LIKE '% ' ||
stehen würde, dann wäre in der Bedingung fest ein Leerzeichen mit drin. Dann müsste auf jeden Fall der Inhalt ein Leerzeichen enthalten.
Du hast aber den Fall, dass Du ein Leerzeichen ergänzen musst. Da aber '%' für beliebig viele Zeichen steht macht das keinen Sinn.
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

Pit Zyclade
Beiträge: 2674
Registriert: Mo 12. Nov 2012, 16:59

Re: Suche mit coalesce

Beitrag von Pit Zyclade » Sa 8. Okt 2022, 22:17

Ich habe meinen Fehler schon gefunden, ich habe wohl schusslich vergessen die Datenbank zwischendurch zu schließen.
Denn eben klappte es prompt, also ohne den Fehler.

Dennoch eine Rückfrage: Wenn ich in der Such"maske" also '% ', dann meinst du hätte das meine Beobachtung erklärt. Aber ich hatte doch " Lieblingsmärchen" eingegeben. Ist die Reihenfolge von % und Leerstelle gar nicht wichtig?
(Gut, ich kann ja mal wieder ein wenig experimentieren. Vielleicht kommt mir dann eine Erläuchtung).

Ich danke dir, Robert, für deine schnelle Antwort von Herzen.
LO 7.5.8.2 (X86_64) / AOO 4.1.14 / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Suche mit coalesce

Beitrag von RobertG » So 9. Okt 2022, 12:35

Nein, '% ' würde nur dann zu einem Ziel führen, wenn eben in Deiner Abfrage ein Ergebnis nur geliefert würde, wenn Du das Leerzeichen weg gelassen hättest.
Aus "Lieblingsmärchen" wäre automatisch " Lieblingsmärchen" als Abfrageinhalt erschienen und Du hättest bei "Die Lieblingsmärchen ...." einen Treffer gehabt.
Aus " Lieblingsmärchen" wäre aber dann " Lieblingsmärchen" geworden und der Treffer wäre nicht mehr da gewesen. Hätte also genau anders herum laufen müssen.

Warum die Datenbank erst einmal geschlossen werden muss um zu einem richtigen Abfrageergebnis zu kommen ist mir allerdings genau so ein Rätsel.
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

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