bonjour,
j'ai 3 tables mysql user, consultation et relation (voir les images ci-dessous).
consultation :
Pièce jointe 351868

relation :
Pièce jointe 351872

user :
Pièce jointe 351991

la table relation contient des invitations qui ont été émis (invitation de demande d'ajout dans la liste d'amis, invitation de rejoindre un group...).
quand un user X invite un user Y,j'insère le id_emeteur de X ET le id_destinataire de Y dans la table relation.
maintenant quand je sélectionne, le problème est là, par ce que il peut y avoir une invitation avec un id_emeteur qui est différent du mien et qu'elle m’intéresse(l'invitation est envoyée a moi).
bref la requête que j'ai fait est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
SELECT id_user,nom,count(*) as totale,nbr_vu_action FROM `consultation` consult inner join users us 
		on (consult.type_info!='amitie' and consult.owner_info!=us.id_user) 
		or (consult.type_info='amitie' and EXISTS(select id_emet from relation where relation.id_relation=consult.id_info 
			and (relation.id_emet=us.id_user or relation.id_dest=us.id_user))) 
		left join relation r on consult.type_info='amitie' 
		and consult.id_info=r.id_relation and (r.id_emet=consult.owner_info or r.id_dest=consult.owner_info) group by us.nom
est-ce qu'il y a un autre moyen plus optimiser et plus propre que ça, pour arriver au même résultat sans passer par EXISTS dans la requête mysql?