🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ 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. 🤗

SQL-Syntax-Fehler....aber wo?

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
4sb3st
Beiträge: 7
Registriert: Do 11. Sep 2014, 09:17

SQL-Syntax-Fehler....aber wo?

Beitrag von 4sb3st » Do 13. Nov 2014, 16:07

Guten Tag Community,

ich lese mich langsam als Novice in die Datenbank- und SQL-Geschichten ein. Nun will ich das Alter eines Fahrers ermitteln, habe aber einen Syntax-Fehler in meiner SQL-Formel. Erkenne aber nicht wo. Wer kann mir den Fehler zeigen?

Code: Alles auswählen

SELECT "ID_FAHRER", "Nachname", "Geburtsdatum", 

CASEWHEN( 
		Month( "Geburtsdatum" ) > Month( CURDATE( ) ),
		DATEDIFF( 'year', "Geburtsdatum", CURDATE( ) ) - 1 
		CASEWHEN(
				Month("Geburtsdatum") = Month(CURDATE()) and DAY("Geburtsdatum") > DAY(CURDATE()),
				DATEDIFF( 'year', "Geburtsdatum", CURDATE( ) ) - 1,
				DATEDIFF( 'year', "Geburtsdatum", CURDATE( ) )
				)
		)AS "Alter" FROM "FAHRER"
Vielen Dank für Eure Hilfe

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

Re: SQL-Syntax-Fehler....aber wo?

Beitrag von RobertG » Do 13. Nov 2014, 17:19

Hallo 4sb3st,

wenn Du umfangreichere SQL-Strukturen zusammensetzt: teste immer wieder aus, bis Du wirklich an die Fehlerquelle ran kommst.

Warum schachtelst Du ein CASEWHEN() in ein anderes CASEWHEN()? Schau Dir einfach einmal das handbuch an. Da steht genau das Altersproblem incl. der Lösung auch bei Schaltjehren drin. Versuche alternativ einmal, die Untergliederung heraus zu nehmen und eine Bedingung zu finden, bei der dann für das Alter ein Jahr abgezogen werden muss - beim rest nimmst Du dann den jahresunterschied zu dem jetzigen Datum.

Code: Alles auswählen

...
(MONTH("Geburtsdatum") > MONTH(CURDATE())) OR
((MONTH("Geburtsdatum") = MONTH(CURDATE())) AND (DAY("Geburtsdatum") >
DAY(CURDATE()))) ,
...
Damit vermeidest Du die Untergleiderung.

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

4sb3st
Beiträge: 7
Registriert: Do 11. Sep 2014, 09:17

Re: SQL-Syntax-Fehler....aber wo?

Beitrag von 4sb3st » Do 13. Nov 2014, 17:32

Danke RobertG!

Ich habe es im Handbuch iwie überlesen. Nun hab ich es gefunden (Stichwort: Stichwortverzeichnis... ist schon ne feine Sache :roll: ). Vielen Dank!


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