2016-09-26 3 views
1
SELECT *, CASE 
    WHEN paydatefinal IS NULL OR paydatefinal = '0000-00-00' THEN paydate 
    ELSE paydatefinal END AS `paydatefinColumn` 
FROM 
    `ws_crm_comenzi` 
WHERE 
    `sezonId` = '4' 
AND `service_id` = '1' 
AND `finished` = '1' 
AND `paydatefinColumn`='2016-09-26' 
ORDER BY `paydatefinColumn` DESC 

, как я могу сделать и из колонки (paydatefinColumn), который производится в случае, но в таблице эта колонка dose't существуютMysql запросов со случаями

+0

Вы не можете ... вы должны повторять соответствующий код ,. – scaisEdge

+0

Что вы имеете в виду –

ответ

1

Так что генерируемый столбец является довольно длительным, и вы не можете использовать генерируемый столбец в выражении WHERE, проще, возможно, обернуть все это в другом выбери

SELECT * FROM (

    SELECT *, CASE 
     WHEN paydatefinal IS NULL OR paydatefinal = '0000-00-00' THEN paydate 
     ELSE paydatefinal END AS `paydatefinColumn` 
    FROM 
     `ws_crm_comenzi` 
    WHERE 
     `sezonId` = '4' 
    AND `service_id` = '1' 
    AND `finished` = '1' 
    AND `paydatefinColumn`='2016-09-26' 
    ORDER BY `paydatefinColumn` DESC) 

AS A WHERE paydatefinColumn = whatever 
0

Вы должны повторить этот код,

SELECT *, CASE 
     WHEN paydatefinal IS NULL OR paydatefinal = '0000-00-00' THEN paydate 
     ELSE paydatefinal END AS `paydatefinColumn` 
    FROM 
     `ws_crm_comenzi` 
    WHERE 
     `sezonId` = '4' 
    AND `service_id` = '1' 
    AND `finished` = '1' 
    AND (CASE 
     WHEN paydatefinal IS NULL OR paydatefinal = '0000-00-00' THEN paydate 
     ELSE paydatefinal END ) = str_toDate('2016-09-26', '%Y-%m-%d') 
    ORDER BY `paydatefinColumn` DESC 
0

Вы должны повторить заявление СЛУЧАЯ в ИНЕКЕ

SELECT *, CASE 
    WHEN paydatefinal IS NULL OR paydatefinal = '0000-00-00' THEN paydate 
    ELSE paydatefinal END AS `paydatefinColumn` 
FROM 
    `ws_crm_comenzi` 
WHERE 
    `sezonId` = '4' 
AND `service_id` = '1' 
AND `finished` = '1' 
AND 
CASE 
    WHEN paydatefinal IS NULL OR paydatefinal = '0000-00-00' THEN paydate 
    ELSE paydatefinal END='2016-09-26' 
ORDER BY `paydatefinColumn` DESC 
2

Вы можете просто сделать это, добавив его в подзапроса

SELECT * from (SELECT *, CASE WHEN paydatefinal IS NULL OR paydatefinal = '0000-00-00' 
THEN paydate 
ELSE 
paydatefinal END AS `paydatefinColumn` FROM `ws_crm_comenzi` WHERE `sezonId` = '4' AND `service_id` = '1' AND `finished` = '1')as TEMP 
where TEMP.paydatefinColumn='2016-09-26' ORDER BY TEMP.paydatefinColumn DESC; 
Смежные вопросы