sql >> Databáze >  >> RDS >> Mysql

Problém podmínky WHERE v SQL

Myslím, že se pokoušíte získat přístup k validFrom a validTo z případového dotazu v podmínce where. Pokud je to váš případ, musíte svůj dotaz přeformátovat.

SELECT t1.* FROM ( SELECT mPrice, aPrice, 
CASE 
    WHEN validFrom < '2013-11-01' 
        THEN '2013-11-01' 
    ELSE validFrom END AS validFrom, 

CASE 
    WHEN validTo > '2013-11-30' 
        THEN '2013-11-30' 
    ELSE validTo END AS validTo 

FROM commission) t1 

WHERE ((t1.validfrom BETWEEN '2013-11-01' AND '2013-11-30') OR (t1.validto BETWEEN '2013-11-01' AND '2013-11-30')) ORDER BY t1.validFrom

To však vrátí 3 výsledky. Pokud potřebujete získat očekávaný výsledek, musíte použít AND podmínka namísto OR .

Pak bude váš dotaz

SELECT t1.* FROM ( SELECT mPrice, aPrice, 
CASE 
    WHEN validFrom < '2013-11-01' 
        THEN '2013-11-01' 
    ELSE validFrom END AS validFrom, 

CASE 
    WHEN validTo > '2013-11-30' 
        THEN '2013-11-30' 
    ELSE validTo END AS validTo 

FROM commission) t1 

WHERE ((t1.validfrom BETWEEN '2013-11-01' AND '2013-11-30') AND (t1.validto BETWEEN '2013-11-01' AND '2013-11-30')) ORDER BY t1.validFrom


  1. Přidejte 6 hodin k funkci now().

  2. Jak připojit html stránky k databázi mysql?

  3. Excel vs Access:Kdy je čas přejít?

  4. Jak přidat řadu řetězců ve zvyšujícím se id v jakékoli tabulce?