MYSQL选择包含来自另一个表的至少两个元素的类别

时间:2016-10-09 21:06:40

标签: php mysql

电子商务:说我有两个表,一个类别,另一个项目。

Categories
-------
category_id
category_name

Items
-----
item_id
item_name
category_id

我需要选择&在我的页面上列出所有包含至少两个项目的类别。

我还需要知道我有多少类别,所以我可以分页... 另外,我需要使用mysql显示每个类别下的项目数。

所以我试过

SELECT  SQL_CALC_FOUND_ROWS *,
(SELECT * FROM items i WHERE i.category_id = c.category_id) as tot
FROM categories c
RIGHT JOIN items i ON i.category_id = c.category_id
HAVING tot > 1
LIMIT 10

但不起作用......感谢任何帮助

1 个答案:

答案 0 :(得分:1)

您正在寻找的是一个简单的聚合,您可以按类别和计数项目进行分组。

select 
  c.category_id,
  c.category_name,
  count(*) as items
from categories c
join items i on i.category_id = c.category_id
group by c.category_id
having count(*) >= 2
order by c.category_id
limit @skip, @show;

如果您想知道有多少类别符合您的条件:

select count(*)
from categories c
where 
(
  select count(*)
  from items i 
  where i.category_id = c.category_id
) >= 2;