Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
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 19/01/2011, 17h48   #1
Invité régulier
 
Inscription : juin 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 38
Points : 6
Points : 6
Par défaut join entre deux tables

je veux sélectionner des données de deux tables différentes, et comme résultat je veux comme résultat tous les données en commun mais aussi les données qui ne sont pas en commun de la deuxième table.
nour111 est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 19/01/2011, 17h52   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
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 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Qu'avez-vous essayé ?
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 10h11   #3
Invité régulier
 
Inscription : juin 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 38
Points : 6
Points : 6
LEFT OUTER JOIN
nour111 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 20/01/2011, 11h02   #4
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
C'est ça.
En fait (je suis pas un adepte de cette norme), avec LEFT JOIN ça marche pareil non ?
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 11h11   #5
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
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 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Oui le OUTER n'est pas syntaxiquement obligatoire.
LEFT JOIN = LEFT OUTER JOIN.

Tout comme JOIN = INNER JOIN.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/01/2011, 14h36   #6
Invité régulier
 
Inscription : juin 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 38
Points : 6
Points : 6
CA marche pas :s; il me ramène seulement les données communs entre la la table 1 et 2 ou les données de la table 1 mais ne me ramène pas les données de la table 2
nour111 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 14h45   #7
Membre à l'essai
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 59
Points : 24
Points : 24
=> UNION
Ujitsu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 14h54   #8
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
Bon, on va arrêter de jouer aux devinettes :
C'est quoi le code testé, avec un jeu de données, le résultat obtenu et le résultat souhaité.
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 20/01/2011, 15h17   #9
Invité régulier
 
Inscription : juin 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 38
Points : 6
Points : 6
Ok.
table1:
Design Qte Mnt
produit 1 1 10
produit 2 2 5
produit 3 2 5.5

table2:
Design Qte Mnt
produit 1 1 10
produit 2 2 5

Code :
1
2
3
SELECT 1.Design,1.qte,1.Mnt FROM table1
LEFT JOIN table2
ON 1.Design=2.Design
nour111 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 16h43   #10
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
Il n'y a aucun problème
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
WITH table1 AS 
(		SELECT 'produit 1' design, 1 qte, 10 mnt FROM dual
UNION ALL SELECT 'produit 2' design, 2 qte, 5 mnt FROM dual
UNION ALL SELECT 'produit 3' design, 2 qte, 5.5 mnt FROM dual
),
table2 AS
(		SELECT 'produit 1' design, 1 qte, 10 mnt FROM dual
UNION ALL SELECT 'produit 2' design, 2 qte, 5 mnt FROM dual
)
SELECT table1.Design,table1.qte, table1.Mnt, table2.mnt AS mnt2
FROM table1 LEFT JOIN table2 ON table1.Design=table2.Design
 
DESIGN		QTE	MNT	MNT2
produit 1	1	10	10
produit 2	2	5	5
produit 3	2	5.5
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 17h18   #11
Invité régulier
 
Inscription : juin 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 38
Points : 6
Points : 6
dsl jété pas tres précise
Ok.
table1:
Design Qte Mnt
produit1 1 10
produit2 2 5
produit3 2 5.5
produit5 1 1
table2:
Design Qte Mnt
produit1 1 10
produit2 2 5
produit6 2 5
Code :

Code :
1
2
3
SELECT 1.Design,1.qte,1.Mnt FROM table1
LEFT JOIN table2
ON 1.Design=2.Design
j'ai besoin qu’il me ramène produit 1,produit 2 ,produit 3 ,produit 5,produit6
nour111 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 17h26   #12
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
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 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Vous avez la réponse dans le post #7.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 08h01   #13
Membre régulier
 
Inscription : septembre 2008
Messages : 84
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 84
Points : 88
Points : 88
et pourquoi pas Full outer join ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
WITH table1 AS 
(		SELECT 'produit 1' design, 1 qte, 10 mnt FROM dual
UNION ALL SELECT 'produit 2' design, 2 qte, 5 mnt FROM dual
UNION ALL SELECT 'produit 3' design, 2 qte, 5.5 mnt FROM dual
UNION ALL SELECT 'produit 5' design, 1 qte, 1 mnt FROM dual
),
table2 AS
(		SELECT 'produit 1' design, 1 qte, 10 mnt FROM dual
UNION ALL SELECT 'produit 2' design, 2 qte, 5 mnt FROM dual
UNION ALL SELECT 'produit 6' design, 2 qte, 5 mnt FROM dual
)
SELECT Nvl(table1.Design, table2.Design) As Design,Nvl(table1.qte, table2.qte) As qte, table1.Mnt, table2.mnt AS mnt2
FROM table1 Full Outer JOIN table2 ON table1.Design=table2.Design
Order By Design

DESIGN	QTE	MNT	MNT2
produit 1	1	10	10
produit 2	2	5	5
produit 3	2	5,5	null
produit 5	1	1	null
produit 6	2	null	5
Par contre, je ne suis pas sûr de comprendre l'utilisation de la colonne Qte...
spdev666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 11h33   #14
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
Ou un left join sur une union
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
WITH table1 AS 
(		SELECT 'produit1' design, 1 qte, 10 mnt FROM dual
UNION ALL SELECT 'produit2' design, 2 qte, 5 mnt FROM dual
UNION ALL SELECT 'produit3' design, 2 qte, 5.5 mnt FROM dual
UNION ALL SELECT 'produit5' design, 1 qte, 1 mnt FROM dual
),
table2 AS
(		SELECT 'produit1' design, 1 qte, 10 mnt FROM dual
UNION ALL SELECT 'produit2' design, 2 qte, 5 mnt FROM dual
UNION ALL SELECT 'produit6' design, 2 qte, 5 mnt FROM dual
)
SELECT w.Design, table1.qte, table1.Mnt
FROM (SELECT design FROM table1 UNION SELECT design FROM table2) w LEFT JOIN table1 ON table1.Design=w.Design
ORDER BY Design
 
DESIGN		QTE	MNT
produit1	1	10
produit2	2	5
produit3	2	5.5
produit5	1	1
produit6
__________________
More Code : More Bugs. Less Code : Less Bugs
McM 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 01h31.


 
 
 
 
Partenaires

Hébergement Web