带有Join,Count和Where的SQL查询

时间:2013-07-19 16:46:23

标签: sql join count where

我有2个表,我正在尝试进行一个查询以节省一些工作。

Table 1: id, category id, colour
Table 2: category id, category name

我想加入他们,以便获得id, category id, category name, colour

然后我想限制它,以便不选择“红色”项目(WHERE colour != "red") 然后我想计算每个类别中的记录数(COUNT(id) GROUP BY (category id)。

我一直在努力:

SELECT COUNT(table1.id), table1.category_id, table2.category_name 
FROM table1 
INNER JOIN table2 ON table1.category_id=table2.category_id 
WHERE table1.colour != "red"

但它不起作用。我尝试了很多变化,只是在尝试上述查询时没有得到任何结果。

3 个答案:

答案 0 :(得分:23)

您必须使用GROUP BY,以便返回多条记录,

SELECT  COUNT(*) TotalCount, 
        b.category_id, 
        b.category_name 
FROM    table1 a
        INNER JOIN table2 b
            ON a.category_id = b.category_id 
WHERE   a.colour <> 'red'
GROUP   BY b.category_id, b.category_name

答案 1 :(得分:4)

SELECT COUNT(*), table1.category_id, table2.category_name 
FROM table1 
INNER JOIN table2 ON table1.category_id=table2.category_id 
WHERE table1.colour <> 'red'
GROUP BY table1.category_id, table2.category_name 

答案 2 :(得分:0)

我使用了子查询,效果很好!

SELECT *,(SELECT count(*) FROM $this->tbl_news WHERE
$this->tbl_news.cat_id=$this->tbl_categories.cat_id) as total_news FROM
$this->tbl_categories
相关问题