0
$data['do'] = $this->db->query("SELECT MONTH(`date`) as month, COUNT(*) as count
FROM `simple` WHERE `ochistka` = 'somevalue' GROUP BY MONTH(`date`)");

ここでは、月ごとに何らかの値を持つフィールドを選択していますが、count( ) を count としてではなく、count2 としてもう 1 つの count( ) のように、他の WHERE 句を持つ他の条件でもう 1 つのフィールドを選択するにはどうすればよいですか?可能?

4

2 に答える 2

4

あなたが達成しようとしていることを正しく理解していれば、次のような SUM(IF) トリックを使用できます。

SELECT MONTH(`date`) as month,
       SUM(IF(`ochistka` = 'somevalue', 1, 0)) as count1,
       SUM(IF(`ochistka` = 'othervalue', 1, 0)) as count2
FROM `simple`
GROUP BY MONTH(`date`)
于 2012-05-23T22:16:13.847 に答える
0

現在コードをテストすることはできませんが、基本的な考え方はサブクエリを使用することです:

SELECT t1.month as month, t1.count as count1, t2.count as count2 
FROM
    (SELECT MONTH(`date`) as month, COUNT(*) as count
     FROM `simple` 
     WHERE `ochistka` = 'somevalue' 
     GROUP BY MONTH(`date`)) AS t1
INNER JOIN
    (SELECT MONTH(`date`) as month, COUNT(*) as count 
     FROM `simple` 
     WHERE `ochistka` = 'someothervalue' 
     GROUP BY MONTH(`date`)) AS t2 ON t1.month = t2.month
于 2012-05-23T22:21:30.360 に答える