abfrage mit mehreren bedingungen

Alles, was MySQL betrifft, kann hier besprochen werden.

abfrage mit mehreren bedingungen

Postby OoBozzoO » 22. April 2009 11:55

ich habe ein problem bei meiner abfrage. diese sieht wie folgt aus:

select * from rma where rmastatus = 0 or rmastatus = 1 or rmastatus = 2 or rmastatus = 3 and kaustausch = 1

die ausgabe sieht in verkürzter form dann so aus.

rmanr artbez sn kname kaustausch rmastatus lieferant rmanrextern rueckkehrdatum kaufk
2 test test test 0 0 test test 0000-00-00 0000-00-00

die bedingung beim status ist korekt, aber die bedingung beim kaustausch soll 1 sein, ist aber 0 und wird trotzdem angezeigt.
was muss ich anders machen?
OoBozzoO
 
Posts: 9
Joined: 17. April 2009 10:41

Re: abfrage mit mehreren bedingungen

Postby Nobbie » 22. April 2009 12:10

OoBozzoO wrote:select * from rma where rmastatus = 0 or rmastatus = 1 or rmastatus = 2 or rmastatus = 3 and kaustausch = 1
...
was muss ich anders machen?


Du mußt selbstverständlich die Bedingungen in Klammern setzen - die werden nicht von links nach rechts abgearbeitet (das wäre nur der Fall bei "gleich starken" Bedingungen), sondern ein "and" bindet stärker als ein "or". Das heißt im Klartext, ohne Klammern hat Dein Select die gleiche Bedeutung wie dieser geklammerte Select:

Code: Select all
select * from rma where (rmastatus = 0 or rmastatus = 1 or rmastatus = 2) or (rmastatus = 3 and kaustausch = 1)


Das ist sicher nicht das, was Du willst: denn nur bei rmastatus = 3 wird die Forderung kaustausch = 1 auch gestellt. Wenn der rmastatus aber 0 oder 1 oder 2 ist, dann spielt der Wert von kaustausch keine Rolle mehr, die Bedingung ist bereits erfüllt. Und deswegen werden Dir dann auch Zeilen angezeigt, die nicht kaustausch = 1 haben.

Richtig sieht der Select so aus:

Code: Select all
select * from rma where (rmastatus = 0 or rmastatus = 1 or rmastatus = 2 or rmastatus = 3) and kaustausch = 1


Das ganze nennt sich "Aussagenlogik" (oder vornehmer "Boolsche Algebra") und ist einfachste Schulmathematik, 10. Klasse oder darunter....
Nobbie
 
Posts: 6770
Joined: 09. March 2008 13:04

Re: abfrage mit mehreren bedingungen

Postby OoBozzoO » 22. April 2009 12:23

jetzt wo du es sagst, hätte ich auch selber drauf kommen können.

lang lang ists her.

danke dir
OoBozzoO
 
Posts: 9
Joined: 17. April 2009 10:41


Return to MySQL

Who is online

Users browsing this forum: No registered users and 4 guests