Partage
  • Partager sur Facebook
  • Partager sur Twitter

UNION dans un WHERE IN

Sujet résolu
    7 novembre 2010 à 17:09:33

    Bonjour,
    Je voudrais savoir s'il est permit d'utiliser l'opérateur union dans un where in.

    Le but est ici de sélectionner tous les enregistrements d'une table dont la date est dans le passé et dont un enregistrement dans une ou l'autre de deux tables connexes à l'attribut «Facturé» à false.

    Comme un exemple vaut mille mots, voici ma requête actuelle.

    SELECT * FROM contrats WHERE dateFin < NOW() AND noContrat IN
    (
       SELECT noContrat FROM versements WHERE facture = FALSE 
       UNION
       SELECT noContrat FROM bordereauxDeTravail WHERE facture = FALSE
    )
    


    Je suis obligé d'utiliser Microsoft Access 2003 et lorsque je tente d'exécuter cette requête, j'ai l'erreur suivante:
    Image utilisateur

    Je ne sais pas si le problème vient de ma requête ou si c'est Access qui ne permet pas de faire de tels requêtes.
    • Partager sur Facebook
    • Partager sur Twitter
      7 novembre 2010 à 20:32:09

      bonjour,
      le message est clair.
      Tu peux éventuellement passer par une vue (view), et dans le langage MS-Access cela doit être une requête, qui fait ton UNION.
      et ensuite :
      SELECT * FROM contrats WHERE dateFin < NOW() AND noContrat IN
      (
      SELECT noContrat FROM maVue
      )
      Essaie!
      • Partager sur Facebook
      • Partager sur Twitter
        7 novembre 2010 à 22:21:39

        Décidément, Access m'étonnera toujours par sa médiocrité.

        Essaie :

        SELECT * FROM contrats WHERE dateFin < NOW() AND 
        (noContrat IN (SELECT noContrat FROM versements WHERE facture = FALSE)
        OR noContrat IN (SELECT noContrat FROM bordereauxDeTravail WHERE facture = FALSE))
        


        Ou un WHERE EXISTS...

        • Partager sur Facebook
        • Partager sur Twitter

        UNION dans un WHERE IN

        × 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