2016-09-26 1 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 

, wie ich eine machen und Von einer Säule (paydatefinColumn), die in einem Fall gemacht wird, aber in der Tabelle in dieser Spalte dose't existiertMysql-Abfrage mit Hüllen

+0

Sie können müssen Sie wiederholen Sie den zugehörigen Code nicht ... durch Hinzufügen . – scaisEdge

+0

was meinst du? –

Antwort

1

Da die generierte Spalte ziemlich lang ist und man kann nicht einer generierten Spalte in einer where-Klausel verwenden, vielleicht die einfachste, die ganze Sache in eine andere wählen

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 
einzuwickeln
0

sollten Sie den Code auf diese Weise wiederholen

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

Sie müssen die CASE-Anweisung in der where-Klausel

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

Sie können einfach wiederholen Sie, dass es in einer Unterabfrage

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; 
Verwandte Themen