verschachtelte Where Statement

stewue

Neuer Benutzer
Beiträge
2
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
 
Werbung:
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"
}
 
Werbung:
Zurück
Oben