根据group_by中的值包括计数结果

时间:2015-03-10 21:17:30

标签: mysql

我有一个SQL表来存储旅行书籍。该表包含(以及其他)以下字段:

'trip_id' int(10) --> Foreign key to trip table
'departure_id' int(10) --> Foreign key to departure table
'book_category_id' int(10) --> Foreign key to type_of_book table
'customer_id' int(10) --> Foreign key to customer table

书籍由旅行和出发定义,并且包含在一个类别中。我需要计算每个类别有多少本书。

在以下示例中

trip_id  departure_id  book_category_id  customer_id    
-------  ------------  ----------------  -----------
1        1             1                 1
1        2             2                 2
2        1             1                 3
1        1             2                 4
2        1             1                 5

总共会有5本书:

  • “旅行1”(trip_id = 1和departure_id = 1)有1本1类书和1本2类书
  • “旅行2”(trip_id = 1和departure_id = 2)有1本类别2
  • “旅行3”(trip_id = 2和departure_id = 1)有2本1类书

我尝试过运行以下查询:

SELECT `books`.`trip_id`, `books`.`departure_id`, COUNT(*) AS total_books
FROM (`books`)
GROUP BY `books`.`departure_id`

而且,很明显,我每次旅行都会得到总书数:

trip_id  departure_id  total_books      
-------  ------------  -----------
1        1             2
1        2             1
2        1             2

我如何获得一个列显示第1类的总书籍,另一列显示第2类的总书籍?

trip_id  departure_id  total_books_category_1  total_books_category_2      
-------  ------------  ----------------------  ----------------------
1        1             1                       1
1        2             0                       1
2        1             0                       2

提前致谢:)

0 个答案:

没有答案