SELECT abfrage mit WHERE bedingung...

keckskoenig

Grünschnabel
hi hab mal wieder ein problem, beidem ich kene ahnung mehr habe worann es liegt. also hb ne einfache SQL abfrage als beispiel :
PHP:
$select = "SELECT * FROM tabelle WHERE field1 = $value1 OR field1 = $value2 AND field2 = $value3 OR field2 = $value4 AND field3 > 0 LIMIT 1";
mysql_query (...)
undsoweiter die veratrbeitung der ausgegebenen zeile funktionierne auch wie sie sollen allerdigs wird die WHERE begrenzung bezogen auf filed3 welches GRÖßER als 0 sein soll nicht beachtet. Soll heißen ich bekomme auch datensätze mit negativen werten für field3 raus. Habe schon versucht durch andere typen also DECIMAL oder INT anstelle vom bisher verwendeten DOUBLE zu benuzten => kein folg hab auch shcon den umweg versucht werte unter 0 gleich NULL zusetzen und dann mit WHERE field3 IS NOT NULL zu prüfen. ebenso erfolglos... hab also auch werte rausbekommen die gleich NULL sind/waren.

vlt. hab ich ja auch einfa nen brett vorm kopf und blick garnichtsmehr wo liegt der fehler?! oder habt ihr ne ahnun wi man das noch anders machen könnte?!

DANKE VORAB!
 
Hallo,

bei deiner SQL-Abfrage, so wie sie jetzt ist, wird ein Datensatz mit in die Ergebnismenge gepackt, wenn z.B. field1 = $value1 TRUE ist, unabhängig davon, ob field3 > 0 ist!
Dein Ausdruck entspricht folgender Gruppierung:
Code:
	{
	field1 = value1
	}
OR
	{
	field1 = value2
	AND
	field2 = value3
	}
OR
	{
	field2 = value4
	AND
	field3 > 0
	}
sprich wenn einer der Blöcke TRUE ist, bekommst du den Datensatz mit in die Ergebnismenge.
Du kannst/musst mit Klammern " ( ) " festlegen, wie die Ausdrücke verknüpft werden sollen.
Code:
SELECT * FROM tabelle WHERE (field1 = $value1 OR field1 = $value2 AND field2 = $value3 OR field2 = $value4) AND field3 > 0 LIMIT 1
hieße dann, dass field3 > 0 Voraussetzung für ein Ergebnis ist.
Hoffe das löst dein Problem und bitte auf Groß-/Kleinschreibung achten. Danke.

MfG
 
jo das hilft danke !
wusste doch das es was banales ist. hab überhauptnicht an klammern in der MYSQL abfrage gedacht :pdas kommt dvon wenn man zu umständlich denkt da sieht man dne wald vor bäumen nicht .

Danke nochmal!
 
Zurück