Tobias L.: Abfrage mit mehreren Möglichkeiten

Hallo,

ich habe eine Frage bzgl. einer Abfrage.

Ich habe ein Formular auf einer Internetseite mit den Feldern "name" und "ort".

Wenn ich jetzt danach suchen will, z.B. nach dem Namen, dann sieht das ja so aus: "WHERE name LIKE '%$name%'"

Wie schreib ich die Abfrage aber, wenn ich mehrere Felder habe wie oben geschrieben "name" und "ort"?

WHERE name LIKE '%$name%'
WHERE ort LIKE '%$ort%'

Es soll natürlich die Möglichkeit geben, dass nur ein Feld z.B. "ort" ausgefüllt ist und wenn beide ausgefüllt sind, muss beides zutreffen z.B. "name" like %schmi% UND "ort" like %burg%

Ich hoffe, ich habe mich diesesmal verständlicher ausgedrückt.

Viele Grüße,
Tobias

  1. yo,

    Wie schreib ich die Abfrage aber, wenn ich mehrere Felder habe wie oben geschrieben "name" und "ort"?

    WHERE name LIKE '$name%' OR ort LIKE '$ort%'

    lass die % Zeichen vorne weg.

    Ilja

    1. yo,

      habe zu schnell gelesen. da beides zutreffen soll, hilft dir der OR operator hier nichts. also nimmst du den AND Operator:

      WHERE name LIKE '$name%' AND ort LIKE '$ort%'

      falls ein Feld leer sein sollte, dann nimmst du die bedingung aus der abfrage über deine programm-sürache ganz raus.

      Ilja

      1. falls ein Feld leer sein sollte, dann nimmst du die bedingung aus der   abfrage über deine programm-sürache ganz raus.

        Danke für die Antwort, aber wie funktioniert das?

        1. yo,

          Danke für die Antwort, aber wie funktioniert das?

          mit welcher Sprache programmierst du den ?

          Ilja

          1. mit welcher Sprache programmierst du den ?

            mit PHP. Bei zwei Feldern wäre es noch Problemlos möglich mit if abzufragen, ist dies Feld ausgefüllt, oder dieses...

            Meine Frage soll auch gültig sein, wenn es z.B. 10 Felder sind.

            1. Meine Frage soll auch gültig sein, wenn es z.B. 10 Felder sind.

              Du solltest Dich mal etwas intensiver mit der WHERE-Klausel und den dort zulässigen Vergleichsoperatoren beschäftigen:
              http://www.mysql.org/doc/refman/5.1/de/comparison-operators.html

              1. Jetzt habe ich doch tatsächlich den Hinweis auf den Vergleichsoperator IN vergessen...

      2. Glück auf!

        falls ein Feld leer sein sollte, dann nimmst du die bedingung aus der abfrage über deine programm-sürache ganz raus.

        Das ist doch eigentlich gar nich nötig, oder? Wenn das Feld leer ist, steht doch entsprechend
        WHERE foo LIKE '%%'
        da ja der Wert des Feldes zwischen die %% gesetzt wird, was dann wiederum alles findet. Oder irre ich mich und habe den Fehler in den SQL-Statements meiner Software, an denen ich seit Tagen sitze, nicht gefunden?

        Gruß,
        der Juve