这是我的查询
这是另一次尝试:
有没有选择MAX,无论如何我可以获得Book详细信息???
我尝试过更改为预订。*但是它出错了。请有人告诉我如何去做,我可以检索图书信息吗?
我要做的是从一张桌子获取最高金额并获取与之相关的记录
提前致谢
答案 0 :(得分:1)
在不了解您的架构的情况下,我可以提供帮助(基于您当前的查询):
SELECT bk.*, a.maxDonations
FROM Book bk
INNER JOIN (SELECT b.bookID, MAX(lre.donationsCollected) as maxDonations
FROM Book b
INNER JOIN MemberBorrowsBook mbb
ON b.bookID = mbb.bookID
INNER JOIN LibraryRepairEvent lre
ON mbb.memberID = lre.organiserID
GROUP BY b.bookID
) a
ON bk.bookID = a.bookID
答案 1 :(得分:0)
这会给您一个错误,因为您尝试从查询中返回每一行,并试图为您提供汇总结果。
“max”操作是一个聚合函数,这意味着它“给我一大堆行,我会给你一个结果。”
虽然只说“select *”不是一个聚合操作,但它只是说“给我一个我选择的每一行的结果”
解决问题并获取max(donationsCollected)行的所有详细信息的最简单方法是执行以下选择:
select * from LibraryRepairEvent where donationsCollected =
SELECT MAX(LibraryRepairEvent.donationsCollected)
FROM LibraryRepairEvent
WHERE EXISTS (
SELECT 1 FROM MemberBorrowsBook
JOIN Book ON Book.bookID = MemberBorrowsBook.bookID
WHERE LibraryRepairEvent.organiserID = MemberBorrowsBook.memberID
)
我不记得你是否需要说“donationsCollected =”或“捐赠收集的地方”,所以给他们两个尝试