2011-11-10 5 views
0

J'ai une table qui contient beaucoup d'enregistrements. C'est pour un site d'enchères. Cette table peut avoir plusieurs user_id qui peuvent être identiques et plusieurs auction_id qui peuvent être identiques.MySQL Sélectionnez multiple distinct

J'essaye d'écrire un script qui envoie un email une fois à chaque utilisateur qui a placé une offre. Si un utilisateur place 10 enchères sur la même enchère, je veux seulement que l'email soit envoyé une fois par utilisateur par enchère, par offre.

Comment est-ce que je ferais ceci avec distinct plus de 2 champs? Le champ user_id et le champ auction_listing? Je devrai également avoir une clause WHERE afin de ne sélectionner que les enregistrements d'enchères qui ont moins de 24 heures à courir.

Répondre

0

Sans connaître votre schéma de table, il est difficile de répondre à votre question.

En général, si vous faites un GROUP_BY user_id à la fin d'un utilisateur n'apparaîtra une fois dans votre requête entraîne

+0

Salut merci. Je sélectionne d'abord toutes les ventes aux enchères avec moins de 24 heures d'abord, puis j'ai une requête select imbriquée pour obtenir les enchérisseurs afin que le groupe ait travaillé ... J'aurais dû y penser !!! – puks1978

1
SELECT DISTINCT b.user_id, b.auction_listing 
FROM AuctionBids b 
JOIN Auctions a USING (auction_listing) 
WHERE a.end_datetime < NOW() + INTERVAL 24 hour 

Ou

SELECT b.user_id, b.auction_listing 
FROM AuctionBids b 
JOIN Auctions a USING (auction_listing) 
WHERE a.end_datetime < NOW() + INTERVAL 24 hour 
GROUP BY b.user_id, b.auction_listing 
+0

Salut merci pour cela. Il s'est avéré beaucoup plus facile que je pensais. J'aurais dû prendre 10 minutes de plus pour y penser. – puks1978