| Auteur | |
|---|---|
| nesquik | |
| 2 Posts |
Bonsoir les Alsanautes J'espère que je poste mon sujet où il faut... J'ai une table utilisateur qui contient plusieurs champs, dont login et email. Lorsqu'un utilisateur valide son inscription, je vérifie si le login et l'email ne sont pas déjà enregistrés. Si c'est le cas j'affiche un message demandant à l'utilisateur de choisir un autre email ou login ou les deux. Actuellement je fais deux requête sql, une pour le login et une autre pour vérifier si l'email n'est pas déjà enregistré. Pour finir sur une troisième requête qui enregistre les informations si il n'y aucun problème. Je me demandais si il était possible de vérifier en une seul requête, l'existence d'un email et d'un login mais qui ne sont pas forcément sur la même ligne. Exemple : Utilisateur 1 : mail1@mail.fr, login1 utilisateur 2 : mail2@mail.com, login 2 Par exemple, je souhaite m'inscrire, je met login1 et mail5@mail.com, est-il possible d'obtenir sur une seul requête, un résultat qui me retournerait totalLogin = 1 et totalMail = 0. Si quelqu'un pouvait m'orienter vers une solution sans forcément m'écrire la requête, ce serait super sympa Je continue de chercher de mon côté, si je trouve quelque chose je viendrais poster. Je vous remercie et passer une bonne soirée |
| kenor | |
| 399 Posts |
Hum à priori, 2 count(), un GROUP BY sur clé primaire et le tour est joué. genre SELECT count(login) as total_login, count(email) as total_email FROM t WHERE login = login_test OR mail = mail_test GROUP BY id Quelque chose dans le style. |
| Tony Monast | |
Fusionnez à froid! Modérateur 4131 Posts |
Bonjour, Une piste : http://www.sqlteam.com/article/multiple-record-counts-in-one-sql-statement Le bélier qui va foncer commence par reculer. |
| nesquik | |
| 2 Posts |
Bonsoir, Merci pour vos explications et pour le lien, ça m'a permis de découvrir autre chose et d'avancer Finalement je pense avoir réussi à résoudre mon problème. Jusqu'à aujourd'hui j'ai fait deux requêtes, une pour vérifier le login et une seconde pour vérifier le mail. Puis j'ai été de nouveau confronté à ce problème. Pour une seul table j'ai procédé ainsi (je n'ai pas test avec des jointures)
Ca me renvoie : totalLogin = 0 (Si il n'est pas enregistré) totalMail = 1 (Si il existe dans ma table) Dans mon cas ça fonctionne, je ne sais pas si c'est la meilleur méthode, j'avais essayé avec des CASE WHEN mais sans succés... Si il existe une autre façon de faire je reste ouvert |