IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

UNION : critère de sélection entre 2 requêtes ?


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Points : 123
    Points
    123
    Par défaut UNION : critère de sélection entre 2 requêtes ?
    Bonjour à tous,

    J'ai un petit soucis de SQL sous DB2, j'essaie de créer une UNION entre 2 requêtes, la seconde prenant comme condition une valeur de la première :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT colA1 FROM ma_table_A
    UNION
    SELECT colB2 FROM ma_table_B
    WHERE colA1 = colA2
    J'ai 2 difficultés :

    - sur le WHERE colA1 (ligne 4) qui n'est pas reconnu comme faisant partie de la requête

    - sur le colA2 (ligne 4) qui ne fait pas partie de la requête 2 mais que je ne peux pas intégrer sous peine de ne pas avoir l'équivalence souhaitée

    Sauriez-vous comment m'aider sur le sujet ?

    Je vous remercie et bonne journée,

    C. Tobini

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    En quoi le résultat de cette requête n'est pas correct:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT colA1 FROM ma_table_A
    UNION
    SELECT colB2 FROM ma_table_B
    INNER JOIN ma_table_A on ma_table_A.colA1 = ma_table_B.colA2

    Tatayo.

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Avec les opérateurs ensemblistes UNION [ALL], EXCEPT (MINUS), INTERSECT, chaque requête qui les compose doit être exécutable indépendamment des autres requêtes.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    En quoi le résultat de cette requête n'est pas correct:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT colA1 FROM ma_table_A
    UNION
    SELECT colB2 FROM ma_table_B
    INNER JOIN ma_table_A on ma_table_A.colA1 = ma_table_B.colA2

    Tatayo.
    Bonjour,

    C'est testé et ça marche impeccablement, merci !

    Bonne journée,

    C. Tobini

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Avec les opérateurs ensemblistes UNION [ALL], EXCEPT (MINUS), INTERSECT, chaque requête qui les compose doit être exécutable indépendamment des autres requêtes.
    Bonjour et merci de la réponse,

    J'ai vu, je suis arrivé au résultat avec la solution proposée dans la première réponse, en jointurant la seconde requête

    Je vais me pencher sur un autre problème maintenant : puis-je mettre une clause WHERE dans un SELECT d'une UNION sur un champ qui ne fait pas partie du SELECT de la requête ? Je posterai un autre message si je ne me dépatouille pas

    C. Tobini

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par ctobini Voir le message
    puis-je mettre une clause WHERE dans un SELECT d'une UNION sur un champ qui ne fait pas partie du SELECT de la requête ?
    À mon avis non, pour la raison évoquée par Waldar que tu cites dans ton message : indépendance des requêtes séparées par UNION.

    Si tu expliquais plus concrètement ce que tu souhaites faire, on pourrait t'aider à trouver la solution optimale.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Réponses: 23
    Dernier message: 13/12/2014, 15h48
  2. [AC-2007] Activer ou non un critère de sélection dans une requête
    Par benoistv dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 14/10/2014, 19h10
  3. Critère de sélection dans une requête
    Par tibo894 dans le forum Développement
    Réponses: 2
    Dernier message: 23/09/2011, 11h30
  4. ACCESS 97, requête union, problème de liaison entre 2 requêtes
    Par AGR26 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 10/09/2007, 18h00
  5. Réponses: 3
    Dernier message: 16/06/2006, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo