2016-08-02 8 views
-2

Ich versuche, so etwas wie diesesKomplexe SQL-WHERE-Klausel mit mehreren AND und OR Bedingung

Where (((t1.column1=value1 and t1.column2=value1) OR 
     (t1.column1=value2 and t1.column2=value2)) 
    AND ((t1.column1=value3 and t1.column2=value3) OR 
     (t1.column1=value4 and t1.column2=value4) OR 
     (...))) 

Wenn ich den ersten Teil der Abfrage ausführen, die mit ‚OR‘ Bedingung aus und gibt die Ergebnismenge. Wenn ich den zweiten Teil der Abfrage beginnend mit "AND" Ergebnismenge enthält ist zurückgegeben 0.

Kann jemand pls helfen, wo ich falsch liege. Dank

modifizierte Abfrage für ein besseres Verständnis

WHERE ( ( ( dataType = 'int'  AND DATA = '1') 
      OR ( dataType = 'Integer' AND DATA = '1') 
      ) 
     AND ( ( dataType = 'String' AND DATA = '17890') 
      OR ( dataType = 'String' AND DATA = '178postal') 
      ) 
     ) 
+3

... Sie bitten "t1.column1" um mindestens zwei verschiedene Werte gleichzeitig. Wie erwartest du, dass irgendwelche Zeilen dem entsprechen? – TZHX

+2

T1.Column1 kann nicht Wert1 und Wert3 für den gleichen Datensatz sein (vorausgesetzt die Werte 1 und 3 sind tatsächlich unterschiedlich) – xQbert

+0

Nach der Änderung zum besseren Verständnis: Sie benötigen Datentyp 'int' oder 'Integer' und ALSO zu sein 'String' auch. Macht das Sinn für dich? Sollten Sie etwas anderes als das leere Set von dieser Abfrage erhalten? – mathguy

Antwort

0

Das ist, weil du das sagst t1.column1 entweder Wert1 oder Wert2 sein muss und t1.column1 entweder value3 oder value4 zugleich sein muss.

Wenn value1 und value3 zur selben Zeit gleich sein können, wie ist das dann sinnvoll? Ich denke, Sie haben einige Fehler in Ihrer Logik.

Verwandte Themen