Comparer deux colonnes

Fermé
kravop Messages postés 88 Date d'inscription mardi 19 janvier 2016 Statut Membre Dernière intervention 19 février 2019 - 8 févr. 2017 à 15:27
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 13 févr. 2017 à 10:55
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.


A voir également:

2 réponses

yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
Modifié par yg_be le 8/02/2017 à 19:36
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 13/02/2017 à 11:00
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 mardi 27 octobre 2015 Statut Membre Dernière intervention 23 octobre 2017 27
8 févr. 2017 à 15:43
Avec un WHERE NumExp=NumDes peut être ?
-1
kravop Messages postés 88 Date d'inscription mardi 19 janvier 2016 Statut Membre Dernière intervention 19 février 2019 78
8 févr. 2017 à 15:47
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