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.
Version imprimable
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.
Qu'avez-vous essayé ?
LEFT OUTER JOIN
C'est ça.
En fait (je suis pas un adepte de cette norme), avec LEFT JOIN ça marche pareil non ?
Oui le OUTER n'est pas syntaxiquement obligatoire.
LEFT JOIN = LEFT OUTER JOIN.
Tout comme JOIN = INNER JOIN.
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
=> UNION
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é.
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
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
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 :
j'ai besoin qu’il me ramène produit 1,produit 2 ,produit 3 ,produit 5,produit6Code:
1
2
3 SELECT 1.Design,1.qte,1.Mnt FROM table1 LEFT JOIN table2 ON 1.Design=2.Design
Vous avez la réponse dans le post #7.
et pourquoi pas Full outer join ?
Par contre, je ne suis pas sûr de comprendre l'utilisation de la colonne Qte...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
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