J'ai trois tables; Enchères, enchères et utilisateurs. La structure de la table ressemble à ceci comme suit: Mon objectif est de Rejoignez ces tables afin que je puisse obtenir les valeurs les plus élevées de ces offres, ainsi que pour obtenir les noms d'utilisateur liés à ces offres; donc j'ai un résultat défini comme: p> jusqu'à présent, ma requête est la suivante: p> ceci obtient le Des lignes simples que je suis après, mais il semble afficher le plus bas bid_amt, pas le plus élevé. p> p> utilisateurs code> est juste une table standard, avec ID et nom d'utilisateur. P>
5 Réponses :
Essayez ceci:
SELECT id, user_id, auction_id, MAX(bid_amt) FROM action_bids GROUP BY auction_id
Essayez d'ajouter la clause suivante; Pas sûr de la performance.
WHERE NOT EXISTS
(SELECT * FROM auctionbid abhigher
WHERE abhigher.auction_id = ab.auction_id
AND abhigher.auctionbid_amt >= ab.auctionbid_amt
AND abhigher.id > ab.id)
Il s'agit d'un problème global typique au sein du groupe. Vous pouvez le résoudre à l'aide d'un appelé l'exclusion de soi de gauche em> Essayez ce qui suit: p> Il construit essentiellement une jointure entre la gauche et Côté droit, jusqu'à ce qu'il ne trouve plus un pour le côté gauche, et c'est le plus haut élément alors. p> Une autre solution utiliserait plusieurs requêtes (bien sûr) ou une table globale temporaire. P > p>
Vous n'avez pas besoin de rejoindre la table des utilisateurs. Il est joint à Auction_bids AB CODE> Table, et il y aura toujours un utilisateur là-bas. Question: Est-il possible pour plus d'un utilisateur d'enchérir le même montant pour une vente aux enchères? La requête montre toutes avec une offre la plus élevée. De plus, je suis curieux si cela fonctionnera assez vite lorsque les tables poussent plus de quelques milliers de lignes.
Vous pouvez utiliser la fonction Max et une sous-sélectionne pour obtenir une offre maximale pour chaque vente aux enchères. Si vous rejoignez ce sous-sélection avec vos autres tables et définissez la clause où vous devriez obtenir ce que vous recherchez. espère que cela aide. P> P>
Voici ce que vous pouvez essayer..ike Old School..nothing Nouveau..no besoin d'aller pour une jointure gauche ou autre chose que cela dépend de votre exigence exacte