MySQL Abfrage: Wenn Feld leer, alles anzeigen

schina02

Mitglied
Heyho!

Der Titel ist jetz nicht so dolle, tut mir leid 😉

Also schreibe an einem ImmobilienScout Programm und bin jetzt bei der Suche nach Immobilien mit 3 Textfeldern:

txtSucheOrt -> Ort eingeben
txtSucheZimmer -> Zimmer mindestens
txtSuchePreis -> Preis maximal

das ist meine qsl-abfrage dazu:
Java:
"select id, art, ort, zimmer, lagebeschreibung, wohnflaeche, grundflaeche, preis " + "from sortiment WHERE preis <= " +
  txtSuchePreis.getText() + " and zimmer >= " + txtSucheZimmer.getText() + " and ort LIKE '" + txtSucheOrt.getText() +
  "%'" + " order by preis asc";

jetzt möchte ich folgendes: wenn man txtSucheZimmer oder txtSuchePreis GANZ frei lässt, soll er nach alle anzeigen. so wie ich jetzt habe, bricht er die suche ab.

gibt es dafür einen schicken sql operator? zb.
Java:
SELECT * FROM sortiment WHERE preis <= " + txtSuchePreis.getText() + " OR EGAL
:applaus:
 
Du müsstest lediglich deinen Query dynamischer als jetzt zusammensetzen.

Also als Grundlage den Query für alle schreiben und je nachdem ob eine gewünschte Bedingung aus dem Formular gewählt wurde die WHERE Bedingung ergänzen.
 
Bin nun doch den SQL Weg gegangen...sollte funktionieren.
[sql]
select id, art, ort, zimmer, lagebeschreibung, wohnflaeche, grundflaeche, preis
from sortiment
WHERE preis <= txtSuchePreis.getText()
and (
(
zimmer >= 0
)
or
(
zimmer >= txtSucheZimmer.getText()
and ort LIKE '" + txtSucheOrt.getText()
)
)
order by preis asc
[/sql]

Also der maximale Preis ist immer Bedingung. Für deine "Zimmer und Ort leer" Bedingung hab ich als Grundlage genommen das Zimmer immer größer gleich 0 ist.
Falls nun doch jemand in beide Felder was eingetragen hat wird das berücksichtigt im anderen Oder.

Bei Java hätte ich halt den Ansatz gewählt wie:
Java:
String meinString = "select	id, art, ort, zimmer, lagebeschreibung, wohnflaeche, grundflaeche, preis
from	sortiment
WHERE	preis <= " + txtSuchePreis.getText();

if (txtSucheZimmer.getText() != "") {
     meinString.concat(" and zimmer >= " + txtSucheZimmer.getText());
}

if (txtSucheOrt.getText() != "") {
     meinString.concat(" and ort like '" + txtSucheOrt.getText() + "%'");
}
So in etwa könnte ich es mir vorstellen. Der StringBuilder wäre vielleicht eine bessere Wahl.
Einfach mal probieren 😉
 

Zurück
Oben