MySql AND und OR verknüpfen

Thomasio

Erfahrenes Mitglied
Ich werde aus dem MySql Manual nicht schlau, zumindest bekomme ich die Syntax nicht auf die Reihe.
Ich will eine SELECT Abfrage machen, die mehrere AND und OR miteinander verknüpft.

Mit nur AND oder nur OR geht es einfach:

Code:
$MyData = mysql_fetch_object(mysql_query("SELECT * FROM `tablename` WHERE `fieldname1` = ".$value1." AND `fieldname2` = ".$value2));


$MyData = mysql_fetch_object(mysql_query("SELECT * FROM `tablename` WHERE `fieldname1` = ".$value1." OR `fieldname2` = ".$value2));

Wie schreibe ich das, damit ich AND und OR verknüpfen kann?
Ich PHP entsprechend diesem:

Code:
if($fieldname1 == $value1 && ($fieldname2 == $value2 || $fieldname3 == $value3))
{
// ...
}
 
Das sollte so ziemlich in jeder Sprache und bei jeder logischen Verknüpfung äquvalent sein. Was funktioniert denn bei dir nicht?

SQL:
SELECT * FROM tabelle WHERE feld1='x' AND (feld2='y' OR feld3='z')
 
Wahrscheinlich bin ich bloss zu blöd Klammern zu zählen, ich bekam jedenfalls immer entweder error order leeres Abfrageergebnis.
Darum hatte ich die Vermutung, dass man im mysql_query() evtl AND und OR nicht einfach mit Klammern verknüpfen kann.

Wenn du sagst das müsste so einfach gehen, bin ich erstmal zufrieden und gehe auf Fehlersuche in meinem Klammern-Konstruct.

Auf jeden Fall danke für die Antwort.
 
Du kannst uns auch dein Query mal zeigen. Ein leeres Ergebnis kann auch darauf hindeuten, dass du einen Denkfehler gemacht hast. Denn sowas wie
SQL:
SELECT * FROM tabelle WHERE feld1='x' AND feld1='y'
gibt immer ein leeres Ergebnis.
 
Hallo!

Wenn du sagst das müsste so einfach gehen.....
Geht auch so einfach. ;)

Es geht aber auch anders (läuft allerdings auf das gleiche Ergebnis hinaus):
SQL:
SELECT * FROM tabelle WHERE (feld1='x' AND feld2='y') OR (feld1='x' AND feld3='z')
Finde ich persönlich übersichtlicher..... aber dass muss jeder für sich selbst enscheiden. ;)

Gruss Dr Dau
 
Mit der Gewissheit, dass es gehen muss, habe ich das Problem derweil gelöst.
Ich hatte AND und OR innerhalb der selben Klammer verknüpft, was ja nicht gehen kann.
Kaum die Klammern richtig gesetzt, schon gings.

Danke euch nochmal für die Hilfe.
 
Wenn die $values richtig gefasst sind, würde es bestimmt gehen ;)

".$value." => '" . $value . "'

Wenn die Query fehl schlägt, weil die Bedingungen nicht erfüllt sind, ist $MyData == false........und du arbeitest mit nicht definierten Vars ;)

mysql_fetch_object ist mit abstand die langsamste Methode, um Daten aus der DB zu kriegen....nimm da besser "mysql_fetch_array"
 
Zuletzt bearbeitet:
Zurück