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.
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.
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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,produit6
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT 1.Design,1.qte,1.Mnt FROM table1 LEFT JOIN table2 ON 1.Design=2.Design
et pourquoi pas Full outer join ?
Par contre, je ne suis pas sûr de comprendre l'utilisation de la colonne Qte...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager