Je travaille sur une application web de réseau social, et j'ai eu une situation où j'ai besoin de renvoyer des e-mails de rappel aux utilisateurs qui n'ont pas activé leurs e-mails. Le problème est que lorsque j'ai enquêté sur la base de données j'ai trouvé que beaucoup de courriels sont dupliqués (il n'y avait apparemment aucune validation sur l'unicité de l'e-mail.) Ce que je dois faire est de récupérer ces champs pour que je puisse renvoyer les e-mails d'activation, et dans le cas des e-mails dupliqués, je dois retourner seulement l'un d'entre eux (ie si j'ai l'utilisateur john avec email [email protected] et l'utilisateur john1 avec email [email protected] aussi , je veux récupérer seulement sur ces johns peu importe john1 ou deux) donc j'ai pensé à suivre la requête SQL par (Grouper par Email). Le fait est que je ne peux pas sélectionner d'autres champs qui ne sont pas dans la clause group by la solution que j'ai ici est celle que je n'aime pas, j'ai créé une liste et chaque fois que j'ai besoin d'envoyer un email à un utilisateur je itère sur toute la liste pour m'assurer que cet email n'existe pas, si ce n'est pas le cas, je l'envoie, puis j'ajoute l'email à la liste, quelque chose comme: if (! EmailIsInList (email)) { SendActivationEmail (email); AddEmailToList (courrier électronique) } else {DoNotSend); }Un travail autour de la limitation de groupe par clause
En fait, j'ai résolu le problème de cette façon, mais je n'aime pas ma solution. Des idées?
Pouvez-vous décrire la structure des tables? Tous les champs (nom d'utilisateur, code d'activation email, email, drapeau d'activation) se trouvent dans la même table ou dans des tables séparées (ex UserId, UserId, Email, IsActivated) et Email table (EmailId, UserId, Date, Message))? –
Voici la structure des tables. Utilisateurs du tableau 1: UserID pk E-mail RegisterDate. Tableau 2 UserActivation: ID pk, ID utilisateur Références fk Utilisateurs (ID utilisateur), EmailModèle activé, Code de courrier électronique. Maintenant, j'ai besoin de l'ensemble de résultats pour être comme suit UserID - Email - EmailCode - UserName (sans e-mails redondants) – Galilyou
Vous ne savez pas pourquoi c'est un problème. Trop de courriels obstruant votre système? Les utilisateurs se plaignent des courriels sur les comptes qu'ils ne veulent pas utiliser? Vous souhaitez que le compte d'utilisateur soit activé en fonction d'une réponse par e-mail. Qui se soucie si deux utilisateurs partagent un compte de messagerie? – JeffO