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