Comparer deux colonnes

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

  1. Contributeur Ambassadeur
    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
    1. 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
  2. Avec un WHERE NumExp=NumDes peut être ?
    -1
    1. 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