2011-07-02 14 views
0

に異なる列の値の数を数える:私はテーブルを持って毎日

`tasks` (`id`, `url_id`, `task`, `date`) 

taskは値を取得することができます:1、2、3 dateは、UNIXタイムスタンプです。このような

{`count_task_1`: 30, `count_task_2`: 14, `count_task_3`: 30, `date`='2011-03-12'}, [..] 

何かがurl_id = 1のためにその日に私のすべてのエントリの数を与える:どのようにurl_id = 1期待される結果がどこにある日常で行わどのように多くのタスクを言ってデータを取得し実行します。

​​

私が見るオプションは、複数のクエリまたはサブクエリ(ほとんど同じです)です。

答えて

0

jinkこの質問の解決にご協力いただきありがとうございます。

SELECT `task`, COUNT(`id`) `count`, DATE(FROM_UNIXTIME(`date`)) `date` FROM `tasks` WHERE `url_id`=3 GROUP BY `task`, DATE(FROM_UNIXTIME(`date`)); 
+0

あなたはマークから離れています。これは列を要求することさえ与えません。あなたは何も解決していません。質問はピボット*を求めることです。 – Bohemian

0

あなたは異なる値にを旋回ため、この高性能なトリックを使用することができます。

SELECT 
    SUM(task_id = 1) as count_task_1, 
    SUM(task_id = 2) as count_task_2, 
    SUM(task_id = 3) as count_task_3, 
    DATE(FROM_UNIXTIME(`date`)) as date 
FROM tasks 
WHERE url_id=1 
GROUP BY 4; 

mysqlの(および他の多くのDBS)でtrue1で、false0あるので、これは動作しますので、条件のSUM()は、その数がtrueであることです。

関連する問題