簡體   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