2

我有这两张表,BOOK 和 REVISION,有点像这样:

书
Book_ID | 书名 |
=======================
1 | 第一册|
2 | 书 2|
3 | 书 3|
4 | 第四册|
修订
Rev_Book_ID | 修改日期 |
============================
1 | 2012 年 10 月 1 日 |
2 | 2012 年 10 月 3 日 |
2 | 2012 年 10 月 5 日 |
4 | 2012 年 10 月 6 日 |

当一本书被修改时,该书的 book_id 将保存在修订表中。如果该书再次被修订,它将添加该书的另一行。在我的 SQL 查询中,结果是它显示了本书的 2 个修订版。

这是我的查询:

SELECT book.Book_ID, book.Book_Name, Revision.Rev_Book_ID  from Book INNER JOIN Revision ON book.Book_ID=Revision.Rev_Book_ID

还有关于修订结果(PHP 问题)我怎么能做到,如果这本书被修订两次,它将显示 2 个修订或 3 如果做了 3 个修订,我知道这是一个 if 和 else 但不知道如何做那个。

我的结果:

图书编号 | 书名 | 修订 |
===============================================
1 | 书 1 | 1 修订 |
2 | 书 2 | 2 修订 |
2 | 书 2 | 2 修订 |
3 | 书 3 | 无修订 |
4 | 第四册 | 1 修订 |
想要结果
图书编号 | 书名 | 修订 |
===============================================
1 | 书 1 | 1 修订 |
2 | 书 2 | 2 修订 |
3 | 书 3 | 无修订 |
4 | 第四册 | 1 修订 |
4

3 回答 3

0

对于每本书,您的修订数 ( COUNT(Date_Modified)):

   SELECT Book_ID, Book_Name, COUNT(Date_Modified) AS "Revisions"
     FROM Book
LEFT JOIN Revison
       ON Book_ID = Revision_Book_ID
 GROUP BY 1, 2
于 2013-10-04T16:08:49.997 回答
0

您可以按 book_id 分组,并仅选择 == 到 MAX(Rev_Book_ID) 的这些 rev_book_ids,一般来说,您希望对每本书的数据进行聚合。这是 mysql 规范:http ://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html 它应该给你很多想法

于 2013-10-04T16:08:05.100 回答
0

假设您只想摆脱重复项:

SELECT book.Book_ID, book.Book_Name, Revision.Rev_Book_ID from Book 
INNER JOIN Revision ON book.Book_ID=Revision.Rev_Book_ID GROUP BY book.Book_ID
于 2013-10-04T16:13:06.050 回答