Précédent   Forum des professionnels en informatique > Bases de données > DB2
DB2 Forum d'entraide technique sur la base de données DB2. Voir aussi -> Rubrique DB2
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 13/01/2011, 14h48   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2008
Messages : 38
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 38
Points : 13
Points : 13
Par défaut Jointure et case

Bonjour à tous,

j'aurais besoin de faire une requete faisant une jointure avec des table en fonction d'un certain code.

exemple :

Select C1
From T1
Case C1
When 1 then inner join T2
When 2 then inner join T3....

Voila l'idée. est-ce possible? Si oui, de quelle maniere?

Merci d'avance à tous.
Agent_Nivek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 15h16   #2
Membre Expert
 
Patrick
Inscription : mai 2008
Messages : 821
Détails du profil
Informations personnelles :
Nom : Patrick
Âge : 42
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2008
Messages : 821
Points : 1 041
Points : 1 041
Il te faut faire un assemblage des lignes entre tes requêtes
exemple

Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT ....
FROM T1 INNER JOIN T2
ON t1.cle = T2.cle
WHERE C1 = 'A'
 
union ALL
 
SELECT ....
FROM T1 INNER JOIN T3
ON t1.cle = T3.cle
WHERE C1 = 'B'
K2R400 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 22h44   #3
Membre actif
 
Inscription : juin 2008
Messages : 146
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : juin 2008
Messages : 146
Points : 183
Points : 183
Tu peux aussi faire des jointures externes en ajoutant des prédicats de jointure dans la clause ON, ce qui donnerait :

Code :
1
2
3
4
5
6
7
8
SELECT ...
FROM T1
LEFT JOIN T2
ON T1.cle= T2.cle
AND T1.C1 = 1
LEFT JOIN T3
ON T1.cle = T3.cle
AND T1.C1 = 2
Gaffe, avec des jointures externes, tu récupèreras une ligne même si absence dans T2 et T3. Tout dépend de ce que tu souhaites sélectionner.

Sinon, tu peux également faire un double contrôle d'existence conditionné par C1.

Ces 2 solutions ont l'avantage de ne scanner T1 qu'une seule fois. Si cette table est volumineuse, le gain peut être conséquent.

Bonne utilisation.
pdz74 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 16h53.


 
 
 
 
Partenaires

Hébergement Web