Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requète SQL complexe

    26 juillet 2011 à 15:18:33

    Salut à tous,

    Je vous explique mon soucis :

    Ma table est de la forme suivante :

    REF |Name | Numero du champs | Valeur du champs

    1 |Version logiciel | 100 | Version 1
    1 |Version voulue | 150 | Version 1
    2 |Version logiciel | 100 | Version 2
    2 |Version voulue | 150 | Version 3
    3 |Version logiciel | 100 | Version 4
    3 |Version voulue | 150 | Version 4

    Je veux sélectionner dans cette table, tous les numéros de REF, dont la version du logiciel et la version voulue est identique.

    Donc avec cet exemple : les REF 1 et 3.

    Je pensais à ça, mais ça n'a pas put aboutir :

    Code :
    SELECT REF
        FROM table
        WHERE numero_de_champs='100' and valeurs_du_champs= ( SELECT valeurs_du_champs FROM table WHERE numero_de_champs='150' and ref=...)
    




    J'ai essayé de retourner le problème dans tous les sens, mais je dois dire que je ne trouve pas.

    Avez vous une idée de la démarche à suivre ?

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      26 juillet 2011 à 15:47:59

      Salut,

      Si ta colonne name contient bien que les valeurs 'version logiciel' et 'version voulue' ceci devrait retourner ce que tu veux :

      select distinct t1.ref from table t1,table t2 
      where t1.ref=t2.ref 
      and t1.Name <> t2.name 
      and t1.valeur=t2.valeur
      


      Enfin je crois :p
      • Partager sur Facebook
      • Partager sur Twitter
        26 juillet 2011 à 15:52:06

        Ah oui effectivement, cette table ne contient pas que 'version logiciel' et 'version voulue', je suis désolé de ne pas l'avoir précisé.

        Merci tout de même.

        J'ai essayé ça qui fonctionne :

        SELECT REF, valeur champs
        FROM table
        WHERE numero_champs='100'
        INTERSECT
        SELECT REF, valeur champs
        FROM table
        WHERE numero_champs='150'
        


        Mais en fait, je fais une union du résultat de cette requête avec une requète ne retournant que REF, du genre :

        SELECT REF
        FROM autre_table
        WHERE ....
        UNION
        (
        SELECT REF, valeur champs
        FROM table
        WHERE numero_champs='100'
        INTERSECT
        SELECT REF, valeur champs
        FROM table
        WHERE numero_champs='150')

        Donc l'union ne marche pas.

        • Partager sur Facebook
        • Partager sur Twitter
          26 juillet 2011 à 15:58:38

          select _1.ref
          from   table _1
                 inner join table _2
                   on  _1.ref = _2.ref
                   and _1.numero_de_champs = 100
                   and _2.numero_de_champs = 150
                   and _1.valeurs_du_champs = _2.valeurs_du_champs
          


          ?
          T.
          • Partager sur Facebook
          • Partager sur Twitter
            26 juillet 2011 à 16:06:58

            Merci Beaucoup !

            C'est exactement ça. Je n'avais pas pensé à joindre la table à elle même. Évident maintenant !

            Merci encore Tracker !
            • Partager sur Facebook
            • Partager sur Twitter
              26 juillet 2011 à 21:50:53

              Au fait c'est quoi la clé primaire de la table en question ?

              (ref,numero) ?
              • Partager sur Facebook
              • Partager sur Twitter

              Requète SQL complexe

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown