繁体   English   中英

帮助MySQL查询

[英]Help with a MySQL query

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

这是我的桌子:

类别表
- ID
- 名称
-永久链接

书桌
- ID
-标题
-作者
-说明
- 价钱

books_categories表
- ID
-book_id
-category_id

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

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中没有条目的类别)将不会返回。

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM