9
votes

Obtenir les résultats les plus élevés dans une jointure

J'ai trois tables; Enchères, enchères et utilisateurs. La structure de la table ressemble à ceci comme suit: xxx

utilisateurs est juste une table standard, avec ID et nom d'utilisateur.

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: xxx

jusqu'à présent, ma requête est la suivante: xxx

ceci obtient le Des lignes simples que je suis après, mais il semble afficher le plus bas bid_amt, pas le plus élevé.


0 commentaires

5 Réponses :


0
votes

Essayez ceci:

SELECT id, user_id, auction_id, MAX(bid_amt) FROM action_bids GROUP BY auction_id


0 commentaires

0
votes

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)


0 commentaires

1
votes

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

Essayez ce qui suit: xxx

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.

Une autre solution utiliserait plusieurs requêtes (bien sûr) ou une table globale temporaire.


1 commentaires

Vous n'avez pas besoin de rejoindre la table des utilisateurs. Il est joint à Auction_bids AB 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.



8
votes

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. XXX

espère que cela aide.


0 commentaires

0
votes

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 xxx


0 commentaires