我有这两个表,BOOK和REVISION,有点像这样:
书Book_ID | Book_Name |======================1 | 第一册|2 | 规格书2|3 | 第三册|4 | 第四册|
校订Rev_Book_ID | Date_Modified |===========================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 | 第 4 册 |1 修订版 |
想要结果预订编号 | 书名 |修订 |==============================================1 | 规格书 1 |1 修订版 |2 | 第 2 册 |2 修订 |3 | 第 3 册 |无修订 |4 | 第 4 册 |1 修订版 |
您可以按book_id分组,并仅选择这些 == 到 MAX(Rev_Book_ID( 的rev_book_ids通常,您希望聚合每本书的数据。这是MySQL规范:http://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html它应该给你很多想法
假设你只想摆脱重复项:
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
对于每本书,您修订的次数(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