場合

2016-09-01 5 views
1

でMySQLにfiltreを作るpaydatefinがnullの場合場合

SELECT id, paydate, CASE 
WHEN paydatefin IS NULL 
THEN paydatefin = paydate 
ELSE paydatefin 
END AS `paydatefin` 
FROM `ws_crm_comenzi` 
WHERE `sezonId` = '4' 
AND `service_id` = '1' 
AND `owner_id` = '325' 
AND `finished` = '1' 
ORDER BY `paydatefin` DESC 



--------------------------------- 
|id | paydate | paydatefin | 
|1 | 2016-08-29 | 2016-08-30 | 
|2 | 2016-08-28 | 0000-00-00 | 
|3 | 2016-08-28 | 2016-08-29 | 

がどのように私は、クエリを作るCA paydatefin私は、私は、3列のID、paydateを疑問を持っている、その後paydatefin = paydate

+0

それはそれは – Takarii

答えて

1

paydatefinNULLの場合は、代わりにpaydateを入力する必要があります。 あなたは比較を行っていました。 (paydatefin = paydate)0/1となります。

代わりにこれを行います。

SELECT 
    id, 
    paydate, 
    CASE 
    WHEN paydatefin IS NULL THEN paydate 
    ELSE paydatefin END AS `paydatefinColumn` 
FROM 
    `ws_crm_comenzi` 
WHERE 
    `sezonId` = '4' 
AND `service_id` = '1' 
AND `owner_id` = '325' 
AND `finished` = '1' 
ORDER BY `paydatefinColumn` DESC 

EDIT:

SELECT 
     id, 
     paydate, 
     CASE 
     WHEN paydatefin IS NULL OR paydatefin = '0000-00-00' THEN paydate 
     ELSE paydatefin END AS `paydatefinColumn` 
    FROM 
     `ws_crm_comenzi` 
    WHERE 
     `sezonId` = '4' 
    AND `service_id` = '1' 
    AND `owner_id` = '325' 
    AND `finished` = '1' 
    ORDER BY `paydatefinColumn` DESC 
+0

を読んで試してみてください、あなたは今、試してみてくださいだろう? 'ws_crm_comenzi'テーブルの現在のデータセットをもっとよく共有してください –

+0

paydatefinとしてpaydateを取っていないと同じ結果を与えるhttp://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html – 1000111

+0

paydatefinがpaydateの値をとるなら、私はそれが必要です –

0

のCa私はこのような気にいらないのですか?

SELECT 
     id, 
     paydate, 
     CASE 
     WHEN paydatefin IS NULL OR paydatefin = '0000-00-00' THEN paydate 
     ELSE paydatefin END AS `paydatefinColumn` 
    FROM 
     `ws_crm_comenzi` 
    WHERE 
     `sezonId` = '4' 
    AND `service_id` = '1' 
    AND `owner_id` = '325' 
    AND `finished` = '1' 
    AND YEARWEEK( `paydatefinColumn`) = YEARWEEK(CURDATE()) 
    ORDER BY `paydatefinColumn` DESC