Hi Leute,
ich bin gerade dabei eine DB in Base zusammenzubasteln. Verwendet wird die "OOo-Datenbank", also nicht MySQL, weil die DB auch auf Rechnern verwendet werden muss, auf denen nur Openoffice läuft und nichts anderes.
Bei einer SQL-Abfrage bräuchte ich nunmehr eine IF-Abfrage, um zwei Felder zusammenzuführen. Ähnlich dem "Problem", wenn Vor- und Nachnahme zusammengeführt werden und der Vorname ein Leerfeld ist, sodass ein störendes Leerzeichen entsteht.
Und genau dieses Leerzeichen will ich vermeiden. Testweise, ob meine IF-Abfrage funktioniert, habe ich den Ausdruck abgespeckt zu (ich weiß, dass keine Leerzeichen entfernt werden würde..., ist auch nur testweise):
SELECT CONCAT(IF(LENGTH(feld1), feld1, ''), feld2) As gesamtfeld FROM tbl_test
Wenn ich diese Abfrage ausführen will, erhalte ich folgende Fehlermeldung:
SQL-Status: 37000
Fehler-Code: -11
Unexpected token: IF in statement [SELECT CONCAT(IF(LENGTH(feld1), feld1,''), feld2) As gesamtfeld FROM tbl_test]
Auch dann, wenn ich die Feld- und Tabellenamen in Anführungszeichen schreibe, erhalte ich diese Fehlermeldung.
Ist eine IF-Abfrage nicht möglich. Oder gibt es Umwege, die man gehen kann? Ich bräuchte diese Abfrage für einen Bericht.
In der Forumssuche habe ich nichts gefunden und per google hatte ich ebenfalls keinen Erfolg.
Für Hinweise und Tipps oder gute Dokus u.ä. bin ich dankbar.
Grüße
Andreas
If-Statement bei Verwendung von HSql
Moderator: Moderatoren
If-Statement bei Verwendung von HSql
OpenSuSE 11.4 - 64 Bit
OOo 3.2.0
OOo 3.2.0
Hey Andreas,
Und Base in Verbindung mit HSQLDB kennt dieses Konstrukt auch nicht.
Die HSQLDB kennt die CASEWENN(a1, a2, a3) Anweisung, wobei das bedeutet, dass wenn der Parameter a1 wahr ist, wird a2 zurückgeliefert, sondt a3.
Das Problem ist, dass diese CASEWHEN() Anweisung wieder nur bei HSQLDB funktioniert, die allgemeien SQL Anweisung CASE... WHEN... ist noch nicht implementiert und versagt.
Also bleibt nur: Für jede verwendete Datenbank spezielle Programmierung
Gruss
Thomas
Genau. Eine "If" - Anweisung gibt es in MySQL, nicht aber - meines Wissens in der normalen SQL-Syntax.Ist eine IF-Abfrage nicht möglich.
Und Base in Verbindung mit HSQLDB kennt dieses Konstrukt auch nicht.
Die HSQLDB kennt die CASEWENN(a1, a2, a3) Anweisung, wobei das bedeutet, dass wenn der Parameter a1 wahr ist, wird a2 zurückgeliefert, sondt a3.
Das Problem ist, dass diese CASEWHEN() Anweisung wieder nur bei HSQLDB funktioniert, die allgemeien SQL Anweisung CASE... WHEN... ist noch nicht implementiert und versagt.
Also bleibt nur: Für jede verwendete Datenbank spezielle Programmierung

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Hallo Toxitom,
danke für Deine schnelle und vor allem hilfreiche Antwort! Jetzt kann ich schonmal an der Abfrage weiterbasteln.
Dass verschiedene Konstruktionen bei verschiedenen DBs nötig sind, ist zwar ärgerlich, aber, wenn man es weiß, nicht so dramatisch. Wieder eine Zeile in meinem schlauen Buch.
Grüße
Andreas
danke für Deine schnelle und vor allem hilfreiche Antwort! Jetzt kann ich schonmal an der Abfrage weiterbasteln.
Dass verschiedene Konstruktionen bei verschiedenen DBs nötig sind, ist zwar ärgerlich, aber, wenn man es weiß, nicht so dramatisch. Wieder eine Zeile in meinem schlauen Buch.

Grüße
Andreas
OpenSuSE 11.4 - 64 Bit
OOo 3.2.0
OOo 3.2.0