2011-03-31 2 views
0

Ok, c'est un peu difficile à expliquer mais peut être très facile à implémenter.Sélection des enregistrements correspondants/mutuels dans MySQL

J'ai une table avec la structure suivante:

`match_id` int(69) NOT NULL auto_increment, 
`event_id` int(6) NOT NULL, 
`users_id` int(6) NOT NULL, 
`matches` int(6) default NULL 

Voici donc un échantillon des données

33  11  54  1221 
32  11  54  21 
31  11  21  54 
30  11  43  54 

Ainsi, en anglais, c'est ce qui doit arriver: Il est un tableau de sélection personnel où user1 sélectionne user2 et vice-versa. J'ai seulement besoin de l'USERS_ID où ils sont mutuellement sélectionnés. Si je cherche des correspondances = 54, j'aurais besoin d'user_id = 21. Parce que 54 correspondait 21 et 21 correspondait 54.

Des idées sur la façon d'écrire l'instruction SQL pour cela? Merci beaucoup. Bruno.

Répondre

2

Essayez ceci:

SELECT DISTINCT a.user_id 
    FROM <YOUR_TABLE> a INNER JOIN <YOUR_TABLE> b 
    ON a.matches = b.users_id 
    AND b.matches = a.users_id 
WHERE a.matches = 54 
+0

Merci les gars. Toutes les solutions ont bien fonctionné! – Bruno

0
SELECT `tn1`.`users_id` from `TableName` `tn1` 
JOIN `TableName` `tn2` ON `tn1`.`matches` = `tn2`.`users_id` 
AND `tn2`.`users_id` = `tn1`.`matches` 

TableName - le nom de votre table

1
select u1.user_id, u2.user_id 
from t u1, z u2 
where u1.matches = u2.user_id and u2.matches = u1.user_id 

vous obtiendrez toujours 2 lignes 54, 21 et 21, 54

Questions connexes