IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

join entre deux tables


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Points : 20
    Points
    20
    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.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Qu'avez-vous essayé ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    LEFT OUTER JOIN

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    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
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Oui le OUTER n'est pas syntaxiquement obligatoire.
    LEFT JOIN = LEFT OUTER JOIN.

    Tout comme JOIN = INNER JOIN.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    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

  7. #7
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Points : 54
    Points
    54
    Par défaut
    => UNION

  8. #8
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    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
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    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

  10. #10
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    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
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Points : 20
    Points
    20
    Par défaut
    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 : 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
    j'ai besoin qu’il me ramène produit 1,produit 2 ,produit 3 ,produit 5,produit6

  12. #12
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Vous avez la réponse dans le post #7.

  13. #13
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 101
    Points : 126
    Points
    126
    Par défaut
    et pourquoi pas Full outer join ?

    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
    Par contre, je ne suis pas sûr de comprendre l'utilisation de la colonne Qte...

  14. #14
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    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
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

Discussions similaires

  1. [2008] Left Outer Join entre deux mêmes tables
    Par jslpfasc2 dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 10/03/2014, 16h10
  2. [MySQL-5.0] Join entre deux tables
    Par slig_80 dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/04/2013, 16h16
  3. [MySQL] Join SQL entre deux table (expects parameter..)
    Par noyuw dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 11/03/2011, 18h02
  4. Récuperer différence entre deux tables avec JOIN
    Par Takumi dans le forum Requêtes
    Réponses: 6
    Dernier message: 17/08/2009, 22h59
  5. Inner Join entre deux tables SQL avec VB6
    Par Astragale dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/02/2009, 19h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo