Aide requete SQL

WRInaute discret
Bonjour,

je voudrais afficher les membres d'une table ne se trouvant pas dans une autre.

j'ai donc creer cette requete :

Code:
SELECT `users`.`user_id` FROM `users`, `admin` WHERE date_naissance <= '1979-03-14' AND date_naissance >= '1974-03-14' AND sexe = "homme" AND users.user_id != admin.id_membre

en fait, j'ai une table avec tous les utilisateurs, et une autre table ou il y a l'id des admin et je voudrais afficher les membres qui ne sont pas admin donc les membres qui n'ont pas leur id dans la table admin.

et la requete que j'ai essaye me sort 185 resultat alors que je ne devrais en avoir qu'un seul
 
WRInaute occasionnel
Bonjour,

SELECT `users`.`user_id` FROM `users`, `admin` WHERE date_naissance <= '1979-03-14' AND date_naissance >= '1974-03-14' AND sexe = "homme" AND users.user_id not in (select admin.id_membre from admin)
 
WRInaute discret
Je ne comprend pas, ca bug

meme en faisant ca :

Code:
SELECT *
FROM `users` , `admin`
WHERE users.user_id NOT
IN (
"SELECT admin.id_membre FROM admin"
)

Il me sort 210 resultats alors que pour faire le test, j'ai cree 15 utilisateurs et 14 dans la table admin.

Normalement il devrait me sortir un seul membre
 
WRInaute occasionnel
Essaie ca :

Code:
SELECT * FROM `users` LEFT JOIN `admin` ON users.id=admin.id WHERE admin.id IS NULL
 
WRInaute passionné
Le plus simple serait (de loin) d'avoir une seule table, avec un simple champ tinyint pour différencier le statut des membres (simple membre, modo, etc...).
 
WRInaute discret
oui, c'est ce que j'avais fait mais j'aurais besoin de faire pas mal d'operations dessus, supprimer des admin etc plusieurs fois par jour.

la, je supprime la ligne et le membre n'est plus admin.
et je pensais que ca serait plus rapide pour selectionner les admin vu que je n'ai pas a parcourir toute la table user mais juste admin
 
WRInaute passionné
waouh a dit:
oui, c'est ce que j'avais fait mais j'aurais besoin de faire pas mal d'operations dessus, supprimer des admin etc plusieurs fois par jour.

la, je supprime la ligne et le membre n'est plus admin.
et je pensais que ca serait plus rapide pour selectionner les admin vu que je n'ai pas a parcourir toute la table user mais juste admin

Ce serait au contraire beaucoup plus simple et plus rapide qu'une jointure.

Pour passer un membre de modo à simple membre, il suffit de faire: "UPDATE membres SET statut='0' WHERE id='12'".

J'ai comme l'impression que tu ne connais que les SELECT et les DELETE ;-) tu verras, mysql est très riche.
 
WRInaute discret
Ouais, j'ai plus qu'a remodifier mes scripts qui verifient le status du membre et qui l'ajoute en mode admin :roll:

Merci de ton aide
 
Discussions similaires
Haut