Bonjour,
et désolé si j'ai mal cherché...
J'ai 3 tables
utilisateurs
id_user | pseudo | sexe |
---------+---------+------+
1 | toto | 1 |
2 | tata | 2 |
3 | lui | 1 |
4 | elle | 2 |
useronline (donc qui liste les utilisateurs en ligne)
id_user | temps |
et une table user_amis (qui gére les amis et ennemis)
id_user | id_ami | etat |
-----------+--------+-----+
1 | 2 | 1 | donc 2 est l'amie de 1
1 | 3 | 2 | donc 3 est l'ennemi de 1
4 | 1 | 2 | donc 1 est lennemi de 4
admettons que tout le monde est online et que je sois 1
je voudrais récupérer tous les utilisateurs online (autre que moi) dont je ne suis pas l'ennemi et dont le sexe est l'opposé du mien (donc 2)
j'ai essayé ceci :
SELECT u.id_user, u.pseudo
FROM useronline as o
INNER JOIN utilisateur as u ON o.id_user=u.id_user
LEFT JOIN user_amis as a ON u.id_user=a.id_user
WHERE (u.id_user<>1 AND u.sexe=2)
AND NOT (a.etat=2 AND a.id_ami=1)
mais cela ne me renvoie plus rien
j'ai alors essayé ceci
SELECT DISTINCT u.id_user, u.pseudo
FROM useronline as o
INNER JOIN utilisateur as u ON o.id_user=u.id_user
WHERE (u.id_user<>1 AND u.sexe=2)
AND u.id_user NOT IN (SELECT DISTINCT a.id_user FROM user_amis as a WHERE a.etat=2 AND a.id_ami=1)
là j'ai une erreur 1064 : erreur de syntaxe près de....
Donc je suis perdu...
Alors avant de perdre le peu de cheveux qui me restent, merci de m'envoyer vos idées, remarques, critiques, insultes, .....
Martial
Partager