Mysql
 sql >> база данни >  >> RDS >> Mysql

Проблем с условието WHERE в SQL

Мисля, че се опитвате да получите достъп до validFrom и validTo от заявката за случая в условието where. Ако случаят е такъв, трябва да преформатирате заявката си.

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

Но това ще върне 3 резултата. Ако трябва да получите очаквания резултат, тогава трябва да използвате AND условие вместо OR .

Тогава вашата заявка ще бъде

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. .NET 2.0 и MySql в режим на средно доверие

  2. ПОРЪЧАЙТЕ ПО цвят с шестнадесетичен код като критерий в MySQL

  3. Копирайте таблица в друга таблица с различна структура

  4. Как да създам параметризиран PDO израз в PHP за динамична заявка?

  5. Изчислете възрастта въз основа на датата на раждане