Hi Forum,
ich hänge gerade an einem SQL-Proble. Ich habe eine MySQL-Datenbank, die ich in OOO-Base nutze. Ich habe in OOO-Base mehrere Abfragen, auf die wiederum einige Dokumentvorlagen aufbauen.
Zunächst die Erklärung was ich erreichen will:
Ich muss eine Dokumentvorlage so ändern, dass in Abhängigkeit des Inhalts eines Feldes ein Absatz versteckt wird oder nicht. Da ich im Writer bei versteckten Absätzen nicht gefunden habe, wie ich ein LIKE realisieren kann, will ich das ganze über eine zusätzliche Spalte in der Abfrage lösen.
Meine bisherige Abfrage sieht wie folgt aus:
Code: Alles auswählen
SELECT `tbl_adresse`.`id` AS `ID`, `tbl_adresse`.`anrede` AS `Anrede` FROM `db_adv`.`tbl_adresse` AS `tbl_adresse` WHERE `tbl_adresse`.`id` = :IDN
Dadurch "fragt" mich OOO in der Writer-Vorlage nach Druck auf F4 erstmal nach der ID und sucht sich dann den richtigen Datensatz raus. Soweit so gut. Allerdings kann ich durch den Teil
die SQL-Abfrage nicht mehr direkt ausführen lassen.
Nun muss ich in die Abfrage zusätzlich etwas in der Art integrieren:
Code: Alles auswählen
(IF(CONCAT( `tbl_adresse`.`anrede`, `tbl_adresse`.`name` ) LIKE '%foo%', '1', '0')) AS `bar`
Das funktioniert prima, wenn ich das SQL-Kommando direkt ausführen könnte (geht aber nicht, siehe oben). In OOO-Base erhalte ich eine Fehlermeldung beim Speichern der Abfrage:
SQL-Status: HY000
Fehler-Code: 1000
syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE
Also habe ich mit CASEWHEN weiterzukommen versucht. Wenn ich IF durch CASEWHEN ersetze, erhalte ich beim Speichern der Abfrage die gleiche Fehlermeldung.
Deshalb meine Frage: Kann ich eine IF-Bedingung in meine Abfrage einbauen, wenn ich SQL-Kommandos nicht direkt ausführen lassen kann, weil ich noch eine Parameterabfrage habe?
Vielen Dank schonmal für Hinweise und ruhige Weihnachtsfeiertage!
Andreas