sql >> Base de Datos >  >> RDS >> Mysql

Obtener los mejores resultados en un JOIN

Puede usar la función MAX y una subselección para obtener la oferta máxima para cada subasta. Si une esta subselección con sus otras tablas y establece la cláusula where de la siguiente manera, debería obtener lo que está buscando.

SELECT a.id, a.title, ab.bid_points, u.display_name 
FROM Auction AS a
INNER JOIN (SELECT auction_id, MAX(bid_points) AS maxAmount FROM auction_bids GROUP BY auction_id) AS maxBids ON maxBids.auction_id = a.id
INNER JOIN auction_bids AS ab ON a.id = ab.auction_id
INNER JOIN users AS u ON u.id = ab.user_id
WHERE ab.auction_id = maxBids.auction_id AND ab.bid_amount = maxBids.maxAmount

Espero que ayude.