2017-01-31 2 views
0

Ich habe eine Frage. Ich habe diese sql:Stop oder Verifikation in einem sql

SELECT * FROM `plnning` 
WHERE (`begin` <= "2017-01-31 10:00:00" AND "2017-01-31 10:00:00" < `end`) 
OR (`begin` < "2017-02-01 10:00:00" AND "2017-02-01 10:00:00" <= `end`) 
OR ("2017-01-31 10:00:00" <= `begin` AND "2017-02-01 10:00:00" >= `end`) 
AND source = 2 

Wenn ich die SQL ausführen Ich habe diese Daten:

id  begin     end     source 
1  2017-01-31 10:00:00 2017-02-01 10:00:00  1 

seltsam, weil die Quelle = 1, aber in SQL-Such I source = 2, nehme ich an, dass von OR in Klausel. Wie kann ich das lösen? Bitte hilf mir. Thx im Voraus und Entschuldigung für mein Englisch

Antwort

3

Sie sollten alle OR Zustand nur in der Klammer setzen. sehe ich habe alle Zustand in setzen Halter

SELECT * FROM `plnning` 
    WHERE ((`begin` <= "2017-01-31 10:00:00" AND "2017-01-31 10:00:00" < `end`) 
    OR (`begin` < "2017-02-01 10:00:00" AND "2017-02-01 10:00:00" <= `end`) 
    OR ("2017-01-31 10:00:00" <= `begin` AND "2017-02-01 10:00:00" >= `end`)) 
    AND source = 2 
3

sollten Sie versuchen, wie diese

SELECT * FROM `plnning` 
WHERE ((`begin` <= "2017-01-31 10:00:00" AND "2017-01-31 10:00:00" < `end`) 
OR (`begin` < "2017-02-01 10:00:00" AND "2017-02-01 10:00:00" <= `end`) 
OR ("2017-01-31 10:00:00" <= `begin` AND "2017-02-01 10:00:00" >= `end`)) 
AND source = 2