Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/09/2011, 10h26   #1
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
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 :
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
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 10h49   #2
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 092
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 092
Points : 1 898
Points : 1 898
Bonjour,
En quoi le résultat de cette requête n'est pas correct:
Code SQL :
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.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 27/09/2011, 17h59   #3
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 10h55   #4
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
Citation:
Envoyé par tatayo Voir le message
Bonjour,
En quoi le résultat de cette requête n'est pas correct:
Code SQL :
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
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 10h58   #5
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
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
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 11h05   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h47.


 
 
 
 
Partenaires

Hébergement Web