2016-07-04 10 views
2

私はその日付の賢明なデータがあるテーブルを持っていますが、データがない場合でもデータの月を取得する方法はありますか?データベース内の利用可能なデータのみを取得しますが、データがない場合はすべての月データが必要です。私はこのクエリデータがある場合はmysqlからデータを取得する方法

select 
    count(date) as absentdays, 
    MONTHNAME(date) as monthname, 
    MONTH(date) as monthnumber 
from `tbl_records` 
where FIND_IN_SET(2920,users_absent) 
GROUP BY YEAR(date), MONTH(date) 

enter image description here

で試してみました私はあなたがこれを行うにはUNIONを使用することができ、この enter image description here

+1

は私達にあなたの期待される結果を表示します.. –

+0

これは、結合を持つヘルパーテーブルが何らかの性能を上回る場合の例です。性能が重要でない限り。 – Drew

答えて

1

のようなデータを必要とする;)

SELECT SUM(absentdays) AS absentdays, `MONTHNAME`, monthnumber 
FROM (
    SELECT COUNT(DATE) AS absentdays, MONTHNAME(DATE) AS `MONTHNAME`, MONTH(DATE) AS monthnumber 
    FROM `tbl_records` 
    WHERE FIND_IN_SET(2920,users_absent) 
    GROUP BY YEAR(DATE), MONTH(DATE) 
    UNION SELECT 0 AS absentdays, 'January' AS MONTHNAME, 1 AS monthnumber 
    UNION SELECT 0 AS absentdays, 'February' AS MONTHNAME, 2 AS monthnumber 
    UNION SELECT 0 AS absentdays, 'March' AS MONTHNAME, 3 AS monthnumber 
    UNION SELECT 0 AS absentdays, 'April' AS MONTHNAME, 4 AS monthnumber 
    UNION SELECT 0 AS absentdays, 'May' AS MONTHNAME, 5 AS monthnumber 
    UNION SELECT 0 AS absentdays, 'June' AS MONTHNAME, 6 AS monthnumber 
    UNION SELECT 0 AS absentdays, 'July' AS MONTHNAME, 7 AS monthnumber 
    UNION SELECT 0 AS absentdays, 'August' AS MONTHNAME, 8 AS monthnumber 
    UNION SELECT 0 AS absentdays, 'September' AS MONTHNAME, 9 AS monthnumber 
    UNION SELECT 0 AS absentdays, 'October' AS MONTHNAME, 10 AS monthnumber 
    UNION SELECT 0 AS absentdays, 'November' AS MONTHNAME, 11 AS monthnumber 
    UNION SELECT 0 AS absentdays, 'December' AS MONTHNAME, 12 AS monthnumber 
) t 
GROUP BY `MONTHNAME`, monthnumber 
+0

ありがとう、それは働いています。 –

関連する問題