Jetez un oeil à la requête mySQL suivante:MySQL jointure réflexive question
SELECT fname,lname FROM users WHERE users.id IN (SELECT sub FROM friends WHERE friends.dom = 1)
La requête ci-dessus crée d'abord un ensemble de toutes les années friends.sub par la requête interne, puis la requête externe sélectionne une liste de les utilisateurs où les identifiants d'utilisateur sont contenus dans l'ensemble créé par la requête interne (c'est-à-dire l'union des deux ensembles).
Et cela fonctionne très bien. Mais si vous avez besoin de l'ensemble intérieur pour contenir non seulement les sous-marins où dom = 1, mais aussi les Doms où sub = 1, comme suit: requête externe reste comme ci-dessus, pseudocode pur:
(SELECT sub FROM friends WHERE friends.dom = 1)
***AND***
(SELECT dom FROM friends WHERE friends.sub = 1)
Est-il possible de faire ce genre de fonctionnalité avec la requête interne ??
Toute aide ou assistance gars apprécié ;-D
Merci beaucoup les gars, mon mal de tête a disparu maintenant!
Beau travail les gars! est-ce l'approche la plus optimale? –
@ DJDonaL3000: Oui, je le crois. Si vous prévoyez d'avoir plusieurs enregistrements, vous devez vous assurer que 'sub' et' dom' sont indexés correctement. Vous pouvez utiliser la commande MySQL ['EXPLAIN'] (http://dev.mysql.com/doc/refman/5.0/en/explain.html) pour voir si la requête utilise un index ou non. –
Comment les utilisateurs et les amis se connectent-ils automatiquement lorsqu'ils sont différents? – Xailor