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,具有其他 WHERE 子句是可能的?

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 回答