SQL QUERY zusammenfassen

MarkusEbeling

Grünschnabel
Hallo!

Ich wollte fragen ob man die u.g. SQL-Klausel verkürzen kann.
PHP:
$query =
  mysqli_fetch_object
 (mysqli_query($database, "SELECT test FROM test

                                              WHERE p = $_GET[p]
                                                   AND m.m = p.m
                                                   AND type = 0

                                                       OR p = $_GET[p]
                                                    AND type = $type
                                                    AND m.m = p.m"));

Bei einer If-Schleifen kann man die Bedingung die in beiden Fällen gilt ja auch in einer Klammer vor die dahinter liegende Abfrage packen.

Gruß Markus
 
Wenn du den komischen Filter erklären könntest.
Es fehlen die Klammern um da eine Logik reinzubringen

Deine Erklärung hilft leider nicht weiter. Ich habe zwar im Kopf einige Satzzeichen gesetzt, es gab aber nie Sinn.

Und woher kommen die Quellen p und m? Du hast nur eine Tabelle test ohne einen Alias. Aber kein p und ein m.

Zudem: niemals direkt aus $_GET oder $_POST in ein SQL schreiben! Das währe als ob die die Haustüre nicht nur nicht abgeschlossen hast, sondern beleuchtet offenstehend mit einer Blinkschrift "bin nicht zuhause"
 
Okay!
Ich kürze das mal ein bisschen zusammen!
PHP:
SELECT feld FROM datenbank 

WHERE vergleich1 = wert1
AND vergleich2 = 0

OR vergleich1 = wert1
AND vergleich2 = $variable

Im o.g. Beispiel ist jeweils der erste Vergleiche ja der selbe, lediglich die zweite Bedingung ist anders.
Die Frage ist nun, ob ich die Vergleiche, die ja für beide WHEREs passen quasi Vorklammern kann.

Ähnlich wie im u.g. Beispiel
PHP:
if($vergleich1 = $wert1 && ($vergleich3 = 0 || $vergleich3 = $variable))
 
Wie Kalito schrieb. mit einem IN()
SQL:
WHERE vergleich1 = wert1
AND vergleich2 IN (0, $variable)
Oder mit OR und Klammern (analog zu deinem if())
SQL:
WHERE vergleich1 = wert1
AND (
  vergleich2 = 0
  OR vergleich2 = $variable
)
 
Zurück