nutzerforum

Nutzerforum.
Informationen, Tipps und Antworten zur Vereinsverwaltung "GS-VEREIN"

Zur Übersicht aller Diskussionen in diesem Forum | Zur Startseite


gwohlers schrieb am 31.03.2008 13:58:

Kleine Fehler

Ich habe ein Zusatzfeld mit dem Alter des Mitgliedes belegt. Dann wollte ich eine SQL Abfrage auf alle 7 - 18 jährigen durchführen.

Zusatzfeld3 >= 7 und Zusatzfeld3 <= 18.

Leider gibt die Abfrage keinen Satz. Nur <= geht. Aber so eine Abfrage geht nicht.

Mache ich einen Fehler? (Version 2007).

MfG

Gerhard Wohlers

 

 

mbaersch schrieb am 31.03.2008 14:29:

Re: Kleine Fehler

Hallo,

der Fehler liegt in der Annahme, dass es sich um einen numerischen Wert handelt. Die Zusatzfelder beinhalten Zeichenwerte, so dass der WHERE - Anteil das SQL-Statement, welches bei Ihrer Abfrage erstellt wird, in etwa so aussehen sollte, wenn Sie vom SQL-Builder in den SQL-Editor-Modus umschalten:

((ZU3) >='7') AND ((ZU3) <='18') 

Es werden also Zeichenwerte aus dem Feld mit Zeichenwerten ('7', nicht 7) verglichen. Und da die Zeichenkette "7" immer größer ist als die Zeichenkette "18", da diese mit einer "1" beginnt, welche kleiner als die "7" ist, kann diese Bedingung niemals erfüllt werden und folgerichtig erhalten Sie auch ein leeres Ergebnis.

Um die Werte als echte Zahlen behandeln zu können, müssen diese in der Abfrage (das geht nur im Editor) in Integer[=Ganzzahlen]- Werte umgewandelt werden. Das geht dann z. B. so:

(CAST(ZU3 AS INT) >=8) AND (CAST(ZU3 AS INT) <=18)

In diesem Fall kann die Bedingung auch erfüllt werden und Sie erhalten das gewünschte Ergebnis. Ein "SQL-Purist" würde wahrscheinlich eher ein Statement wie

CAST(ZU3 AS INT) BETWEEN 8 AND 18

verwenden; auch das liefert die gewünschten Daten zurück und ist auch menschenlesbarer.

Mit freundlichen Grüßen aus MG
Markus Baersch