David_monchy
Messages postés214Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention23 juin 2006
-
16 juin 2006 à 11:03
cs_PoFMaN
Messages postés58Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention21 juin 2006
-
21 juin 2006 à 10:17
bonjour,
je voudrais faire cet algo:
on récupère les user enregistrés mais pas ceux bannis.
j'ai une table utilisateurs, et une table pour les bannis. Tous les utilisateurs sont dans la table utilisateur, et les bannis sont dans la table des bannis. Cela signifie donc que les bannis sont inscrits deux fois dans les tables (dans la table utilisateur et la table bannis). Je voudrais récupérer les utilisateurs non bannis. j'ai fait cela:
SELECT id_user,pseudo FROM chat_user WHERE pseudo != ALL ( SELECT pseudo FROM chat_bannis ) ORDER BY pseudo
mais cela me retourne une erreur entre le != et le ALL. Y aurait-il des pros en SQL pour m'aider?
Merci d'avance.
David
cs_PoFMaN
Messages postés58Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention21 juin 2006 16 juin 2006 à 11:19
Salut,
Tu peut faire une requete comme ca:
select cuser.id_user, cuser.pseudo from chat_user cuser, chat_bannis cban where cuser.pseudo!=cban.pseudo order by cuser.pseudo
Les cuser et cban c'est des "alias" des noms des tables c'est pour pas avoir à réecrire tout le nom de la table
Par contre du devrai mettre les identifiant des utilisateurs dans ta table des bannis au lieu du pseudo, ou alors si chaque pseudo est unique vaut mieu mettre le pseudo en identifiant (ca fait une colonne de moin et ca t'évite des tests et les possibles erreurs qui vont avec)
David_monchy
Messages postés214Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention23 juin 20061 16 juin 2006 à 13:38
salut,
bon, aucune des deux solutions ne fonctionne. pour celle de prolix, il me met une erreur entre le 'NOT IN( 'et le 'SELEcT'. Pour pofman, la requete s'exécute mais elle ne renvoie rien, alors que mes utilisateurs ne sont pas tous bannis. Auriez-vous une autre idée?
David
cs_PoFMaN
Messages postés58Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention21 juin 2006 16 juin 2006 à 14:06
Arf oui me suis planté avec ca ca devrai marcher (je l'ai testé):
select cuser.id_user, cuser.pseudo from chat_user cuser where not exists (select cban.* from chat_bannis cban where cban.pseudo=cuser.pseudo) order by cuser.pseudo
David_monchy
Messages postés214Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention23 juin 20061 16 juin 2006 à 14:20
il me dit:
You have an error in your SQL syntax near 'exists ( select cban .
* from chat_bannis cban where cban . pseudo = cuser .' at line 1
bon je ne comprends pas trop les alias, mais par exemple comment phpmyadmin sait que cuser correspond à la table des user?
cs_benstar
Messages postés81Date d'inscriptionvendredi 17 décembre 2004StatutMembreDernière intervention12 octobre 2009 16 juin 2006 à 15:54
id_user et id_banis sont autoincrementes ? si oui ce sera plus simple. tu fais SELECT id_user,pseudo FROM chat_user WHERE id_user not in ( SELECT id_banis FROM chat_bannis ) ORDER BY pseudo.
cs_PoFMaN
Messages postés58Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention21 juin 2006 16 juin 2006 à 21:13
Pour les alias, MySQL le sai parce que après le from tu as "NOMdeLAtable ALIASdeCETTEtable, ..." en clair l'alias tu le défini en le mettant apres le nom de la table dans le from. (si ca te gene tu peu les virer c pas necessaire mais comme ca fait une requete plus courte je trouve ça plus lisible)
Sinon pour la requete, ben je comprend pas trop pourquoi t'as une erreur, t'as quoi comme version de MySQL? Moi j'ai testé la requete avec la version 4.1.12 sur des tables pareil sauf que y a une table avec des utilisateur simple et une autre table avec les pseudos des utilisateurs simples qui ont des droits. T'as vérifié les nom de tables, ou de champ (je me suis peut etre planté dessus)?
David_monchy
Messages postés214Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention23 juin 20061 19 juin 2006 à 09:53
salut,
benstar, id_user et id_bannis ne sont pas autoincrémenté, puisque les utilisateurs peuvent etre "débannis", donc je n'ai pas trop envie d'utiliser un chiffre juste pour un mec qui sera banni 5 minutes... (oui je sais c'est bete de débannir au bout de 5 minutes mais j'aimerais que ce soit possible). A part cela, ta requete ne fonctionne pas non plus...
Sinon, pour ma version de MySQL, c'est la 3.23.58, avec phpmyadmin version 2.6.4-pl3 (je ne sais pas si c'est dû à cela...).
cs_PoFMaN
Messages postés58Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention21 juin 2006 21 juin 2006 à 10:17
Salut,
pour la mienne ca doit etre à cause de la version de MySQL la en ce
moment j'ai pas de MySQL installé sur le pc (suis pas chez moi) alors
je peu pas trop d'aider désolé