Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

verschachtelte Where Statement

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von stewue, 26 Juni 2015.

  1. stewue

    stewue Neuer Benutzer

    Hallo zusammen

    ich habe (glaube ich zumindest) ein relativ simples Problem, aber irgendwie stehe ich gerade auf dem Schlauch und komme selbst noch mehr weiter (ich weiss auch nicht mehr nach was suchen bei Google :) )

    Zu meinem Problem: Ich möchte eine Tabelle aus der DB auslesen. Es gibt 2 Bedingungen ($unity und $user). Wenn die Variablen nicht leer sind, soll nur nach genau diesen Werten gesucht werden (WHERE user = $user AND unity = $unity). Wenn jetzt aber $user leer ist, dann soll es keine Einschränkung geben (also wenn $user leer, dann WHERE unity = $unity).

    Momentan sieht mein Code so aus:
    1.PNG

    Naja jetzt bei 2 Variablen geht es ja noch. Aber wenn ich dann 3 oder 4 Parameter habe, wird es einfach extrem unübersichtlich.

    Ich habe mir überlegt es mit Cases zu lösen ( http://stackoverflow.com/questions/...when-or-then-else-end-the-or-is-not-supported ). Aber irgendwie fand ich die Lösung auch nicht optimal.

    Am liebsten hätte ich natürlich soetwas :)
    2.PNG
    Bei den Kommentaren würde :user so ersetzt (wenn $user == ''), dass "user = :user" immer TRUE ist und damit keine Rolle auf die Ausgabe.

    Wie würdet ihr mir empfehlen dieses Problem zu lösen?

    Ich danke euch schon mals im Voraus für eure Hilfe.

    Gruss
    stewue

    PS: Ich hoffe mal im Code selbst ist kein Fehler, da der Original-Code noch wesentlich länger ist, habe ich versucht mein Problem kompakt zusammenzufassen
     
  2. Distrilec

    Distrilec Datenbank-Guru

    Code:
    Select *
    From tabelle
    Where  (column1 = :parameter1 Or :parameter1 Is Null)
    And (column1 = :parameter2 Or :parameter2 Is Null)
    And (column1 = :parameter3 Or :parameter3 Is Null)
    And (column1 = :parameter4 Or :parameter4 Is Null)
    ...
    Alternativ:
    Code:
    Select *
    From tabelle
    Where 1 = 1
    und da dann variable die Bedingungen unten drunter packen...

    In pseudo-code
    Code:
    if ($user <> '')
    {
    $dein_statement = $dein_statement + "[crlf] and column1 = :user"
    }
     
    stewue gefällt das.
  3. stewue

    stewue Neuer Benutzer

    ok tönt super einfach :D Danke dir
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden