帮助MySQL查询

时间:2011-03-20 11:23:24

标签: php mysql

鉴于以下表格,我想知道如何编写查询以仅返回包含书籍的类别以及每个类别的书籍数量。可以在一个或多个类别中添加书籍。我正在使用PHP和MySQL。

以下是我的表格:

类别表
- id
- 姓名
- 永久链接

书籍表
- id
- 标题
- 作者
- 说明
- 价格

books_categories表
- id
- book_id
- category_id

3 个答案:

答案 0 :(得分:5)

select c.id
      ,c.name
      ,count(*) as num_books
  from categories c
  join books_categories bc on(bc.category_id = c.id)
 group 
    by c.id
      ,c.name;

如果您还想要没有图书的类别,请使用LEFT JOIN

答案 1 :(得分:2)

SELECT *, COUNT(*) AS count
FROM books_categories AS bc
LEFT JOIN categories AS c ON c.id = bc.category_id
GROUP BY c.id

您将获得一个count列,其中包含每个类别的行数。

表示零书的类别(即表books_categories中没有条目的类别)

答案 2 :(得分:1)

SELECT categories.id, 
    COUNT(books_categories.id) AS number
FROM categories
    LEFT JOIN books_categories ON books_categories.category_id = categories.id
GROUP BY categories.id
HAVING number > 0;