SQL Suchabfrage

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • SQL Suchabfrage

    Hallo Leute

    Ich möchte eine Suche nach mehreren Kriterien implementieren. Jedoch soll es auch möglich sein, nicht alle Felder einzutragen. Dann wird das Suchergebnis halt nur umfangreicher. Was das angeht steh ich im Moment ziemlich auf dem Schlauch. Gedacht habe ich mir das so:

    SELECT * FROM tabelle
    WHERE
    nummer BETWEEN mind_nummer AND max_nummer OR // entweder die nummer liegt zwischen den werten
    nummer >= mind_nummer OR // oder wenn ich bei max_nummer keinen Eintrag habe, muss die nummer nur >= mind_nummer sein
    nummer<= max_nummer OR // oder wenn ich bei mind_nummer keinen Eintrag habe, muss die nummer nur <= max_nummer sein
    nummer = nummer AND // wenn ich überhaupt keinen Eintrag habe, dann hol halt alle nummern
    name= eing_name OR // entweder der eing_name....
    name= name; // ...oder alle namen wenn kein eing_name da ist.

    Für mind_nummer, max_nummer und eing_name werden natürlich Eingaben aus Textfelden eingelesen.

    Eine andere Idee war das ganze mit XOR zu realisieren. Würde das hinhauen?

    Bitte um Tipps, Anregungen und Hilfestellungen ^^

    lg
    Savatage
  • naja, führe mal ein paar Klammern ein.
    Dann ist das kein Problem...

    Quellcode

    1. SELECT * FROM tabelle
    2. WHERE
    3. (nummer BETWEEN mind_nummer AND max_nummer) OR // entweder die nummer liegt zwischen den werten
    4. (nummer >= mind_nummer AND ISNULL(max_nummer)) OR // oder wenn ich bei max_nummer keinen Eintrag habe, muss die nummer nur >= mind_nummer sein
    5. (nummer<= max_nummer AND ISNULL(mind_nummer)) OR // oder wenn ich bei mind_nummer keinen Eintrag habe, muss die nummer nur <= max_nummer sein
    6. (ISNULL(mind_nummer) && ISNULL(max_nummer)) AND // wenn ich überhaupt keinen Eintrag habe, dann hol halt alle nummern
    7. ....
  • Da AND "stärker" als OR ist, sind die Klammern eigentlich egal. aber selbst mit Klammern funktioniert das nicht.
    Ich hab herraus gefunden, dass das Problem wohl Backendseitig mit gespeicherten Prozeduren funktioniert. Leider hab ich keine Ahnung was das ist, oder wie ich das mit DB2 realisiere =/

    Kann mir jemand Tipps, Links oder gute Tut. sagen?

    lg
    Sava

    Ah, ich seh gerade das du den Befehl ISNULL mit eingefügt hast. Gut, könnte das Tatsächlich funktionen. Problem bei der Sache: Ich arbeite mit der Websphere Portlet Factory (<- nie im Leben freiwillig). Und die erkennt in den SQL-Statments nur die log. Operatoren, SELECT, INSERT, UPDATE und DELET an. =/
    Ich schau trotzdem mal ob ich in die Richtung noch was finde... danke dafür