SQL查询使用Join、Count和Where条件

24

我有两个表格,正在尝试做一个查询以节省一些工作。

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

44

你需要使用 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

8
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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接