【发布时间】:2015-04-03 01:13:21
【问题描述】:
SELECT ai.auction_item_id, ai.starting_bid, b.bid_amount, i.*
FROM
auction_item as ai, //Table contains auction specific details about the item
item as i //Table contains general details about the item
INNER JOIN (
SELECT auction_item_id, bid_amount
FROM bid xb //Table contains bids on item
ORDER BY amount DESC
LIMIT 1 ) b
ON b.auction_item_id = ai.auction_item_id
WHERE
ai.auction_id = 4 AND
i.id = ai.listings_id
ORDER BY RAND()
LIMIT 4
目前,通过上述查询,我能够从当前活跃的拍卖(拍卖#4)中获得 4 个随机物品。但他们目前都以相同的最高出价金额(来自内部连接)返回。每个项目都应该有自己的最高出价金额(来自内部连接) - 除非该项目没有出价,否则它应该是 0(或其他东西)
我在这里做错了什么? 出价表对于每个出价都有一行,因此 LIMIT 1 并在内部连接中按 desc 排序,因为我想要外部部分中每个项目的最高出价。 (如果有出价的话)。
谢谢
【问题讨论】:
-
目前 10 件商品中只有 1 件有出价 - 所以我认为任何没有出价的商品都会获得 1 件有出价的商品的最高出价。因此,如果该内部连接中没有出价,它需要返回 0。我认为这可能是解决方案
-
从头开始,即使另一个项目有出价 - 它只是拉出现有的最高出价并将其用于所有项目(即使是有出价的项目):(
-
您的内部连接表没有对外部表的引用,因此它只会为您提供所有(外部)项目的相同最大bid_amount。目前正在测试一种可能的解决方案。
-
是的,我在想一些类似的事情 - 认为这就是我虽然“ON b.auction_item_id = ai.auction_item_id”正在做的事情。
-
on后面的所有内容都是表格之间的链接。但是您的表本身没有参考外部。单独使用出价表运行查询并查看结果。您会在整个出价表中获得最大金额的一行。