Comparer deux colonnes

kravop Messages postés 89 Date d'inscription   Statut Membre Dernière intervention   -  
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'aimerais comparer deux colonnes d'une même table sous sql
Voilà la table :
NumExp | NumDes |
1 | 2 |
1 | 3 |
4 | 1 |
2 | 1 |


J'aimerais savoir avec qui la personne 1 a eu des conversation
Donc ici le resultat devrait être : 2,3,4

Du coup il faudrait que je fasse une requète SQL qui compare les deux colonnes puis qui enlève les doublons mais je ne vois pas du tout comment faire.


2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 583
 
bonsoir, moi je ferais:
(select NumExp as NumCorrespondant from conversation where NumDes = 1)
union
(select NumDes from conversation where NumExp = 1)
order by NumCorrespondant
1
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

On peut aussi utiliser un OR ou un IN, cela simplifie la requête mais complexifie la clause SELECT pour filtrer la bonne colonne :
SELECT DISTINCT CASE WHEN NumDes = 1 THEN NumExp ELSE NumDes END AS NumCorrespondant
FROM conversation
WHERE NumExp = 1 OR NumDes = 1

SELECT DISTINCT CASE WHEN NumDes = 1 THEN NumExp ELSE NumDes END AS NumCorrespondant
FROM conversation
WHERE 1 IN (NumExp, NumDes)


À noter que selon les indexes posés, ces différentes méthodes pourront avoir des perfs différentes. À tester. (Je ne connais pas assez bien le moteur MySQL pour te dire laquelle sera la plus rapide. Je sais que sous SQL Server par exemple, le UNION de yg_be sera plus efficace que le OR si NumDes et NumExp sont indexés)

Xavier
0
Nenyim Messages postés 72 Date d'inscription   Statut Membre Dernière intervention   27
 
Avec un WHERE NumExp=NumDes peut être ?
-1
kravop Messages postés 89 Date d'inscription   Statut Membre Dernière intervention   78
 
Non car aucun des lignes ne sont égales, et je cherche les differences entre les expediteur et destinataire mais sans doublons. Je ne sais pas si je suis assez clair ?
0