Seite 1 von 1

[gelöst] Abfrage mit Checkbox filtern

Verfasst: Fr 5. Feb 2016, 18:45
von hinti
Hallo!
Ich habe eine Abfrage mit einer FilterTabelle mit drei Filtern. 2 Filter mit Datum und eine mit einer Checkbox (nur_Mitgliedsbeitraege).

Code: Alles auswählen

SELECT `Buchungen_ID`, `Datum`, `BuchungsText`, `Eingang`, `Ausgang`, `Mitgliedsbeitrag` FROM `Imkerverein`.`tbl_Buchungen_Konto` AS `tbl_Buchungen_Konto` WHERE `Datum` >= ( SELECT `Konto_Start_Datum` FROM `Imkerverein`.`tbl_Filter_Datum` ) AND `Datum` <= ( SELECT `Konto_End_Datum` FROM `Imkerverein`.`tbl_Filter_Datum` ) AND `Mitgliedsbeitrag` = ( SELECT `nur_Mitgliedsbeitraege` FROM `Imkerverein`.`tbl_Filter_Datum` )
Das funktioniert auch ganz gut. Ich möchte aber, wenn die Checkbox auf false ist, dass mir alle Datensätze angezeigt werden. In meinem Beispiel werden entweder Buchungen von Mitgliedsbeiträgen, oder alle anderen angezeigt.
Ich muss da wohl so etwas wie eine IF-Anweisung oder CASE WHEN einbauen, komme damit aber nicht klar.

Re: Abfrage mit Checkbox filtern

Verfasst: Fr 5. Feb 2016, 19:33
von RobertG
Hallo hinti,

ich erkenne nicht, wie Du einen Checkboxeintrag `nur_Mitgliedsbeiträge` mit einem Feld `Mitgliedsbeitrag` vergleichen kannst - oder steht dar gar kein Beitrag drin?
Wenn beides Checkboxfelder sind, dann könnte das Folgende vielleicht funktionieren:

Code: Alles auswählen

SELECT `Buchungen_ID`, `Datum`, `BuchungsText`, `Eingang`, `Ausgang`, `Mitgliedsbeitrag` FROM `Imkerverein`.`tbl_Buchungen_Konto` AS `tbl_Buchungen_Konto` WHERE `Mitgliedsbeitrag` = CASE WHEN ( SELECT `nur_Mitgliedsbeitraege` FROM `Imkerverein`.`tbl_Filter_Datum` ) = TRUE THEN TRUE ELSE `Mitgliedsbeitrag`; END
Ich habe jetzt aufgrund der Maskierung angenommen, dass es sich bei der angeschlossenen Datenbank um eine MySQL-Datenbank handelt.

Gruß

Robert

Re: Abfrage mit Checkbox filtern

Verfasst: Fr 5. Feb 2016, 20:28
von hinti
Hallo Robert!

Danke für die Antwort.
Du hast in beiden Fällen Recht, es sind beides Checkboxfelder und es handelt sich um eine MySQL-Datenbank.

Ich bekomme aber einen Syntaxfehler. Irgend etwas ist da faul. Ich habe auch folgendes versucht:

Code: Alles auswählen

CASE WHEN (SELECT `nur_Mitgliedsbeitraege` FROM `Imkerverein`.`tbl_Filter_Datum` ) = TRUE THEN (SELECT `Buchungen_ID`, `Datum`, `BuchungsText`, `Eingang`, `Ausgang`, `Mitgliedsbeitrag` FROM `Imkerverein`.`tbl_Buchungen_Konto` AS `tbl_Buchungen_Konto` WHERE `Mitgliedsbeitrag`) = TRUE ELSE (SELECT `Buchungen_ID`, `Datum`, `BuchungsText`, `Eingang`, `Ausgang`, `Mitgliedsbeitrag` FROM `Imkerverein`.`tbl_Buchungen_Konto` AS `tbl_Buchungen_Konto` WHERE `Mitgliedsbeitrag`) = FALSE; END
Ich weiß nicht ob die Klammer richtig gesetzt sind, bekomme auch eine Syntaxfehler.

Re: Abfrage mit Checkbox filtern

Verfasst: Fr 5. Feb 2016, 21:43
von RobertG
Hallo hinti,

nimm einmal das Semikolon raus. Ich habe das hier aus einem MySQL-Handbuch übertragen. Damit funktioniert die CASE WHEN - Abfrage aber nicht korrekt.

Gruß

Robert

Re: Abfrage mit Checkbox filtern

Verfasst: Fr 5. Feb 2016, 21:59
von hinti
Ja das wars, jetzt läufts.

Danke nochmals für deine Hilfe.

Lg.
hinti