0

以下に、ユニオンを使用して 3 つのテーブルからデータを取得するクエリを示します。

SELECT * FROM (SELECT 

    *,'table1' AS 'tbl', colour AS get_colour(created_date) FROM table1 WHERE customer = '11' UNION SELECT

    *,'table2' AS 'tbl', colour AS get_colour(created_date) FROM table2 WHERE customer = '11' UNION SELECT

    *,'table3' AS 'tbl', colour AS get_colour(created_date) FROM table5 WHERE customer = '11' 

    ORDER BY colour ASC

) as c

結果を色でソートできるように、以下の関数を SQL に書き込もうとしています。

私のPHPサンプル関数は次のとおりです。

function get_colour($date) {

    $days = floor((time() - strtotime($date))/(60*60*24));

    if(empty($date) || $date == "-") return "grey";

    elseif($days <= 7) return "green";

    elseif($days <= 14) return "orange";

    else return "red";
}

CASE SELECT と IF STATEMENTS の使用を検討しましたが、始めるには少し助けが必要です。

どんな助けや指示もいただければ幸いです。

4

1 に答える 1

1

すぐに使えるソリューションは提供しませんが、次のクエリを検討してください。

SELECT
    IF(DATEDIFF(TODAY, YESTERDAY) <= 7, "green",
        IF(DATEDIFF(TODAY, YESTERDAY) <= 14, "orange",
            "red")) as COLOUR
FROM (
    SELECT
    NOW() as TODAY,
    DATE_SUB(NOW(), INTERVAL 15 DAY) as YESTERDAY) T;

それはあなたを助けるはずです;)

于 2012-06-07T15:15:17.710 に答える