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

Langage SQL Discussion :

Pas de JOIN sous Oracle (vraiment dommage...)


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Avril 2003
    Messages : 70
    Points : 50
    Points
    50
    Par défaut [résolu] Pas de JOIN sous Oracle (vraiment dommage...)
    Bonjour, comment pallier l'absence de l'opérateur JOIN sous oracle, notamment la possibilté de faire un LEFT JOIN .

    merci de votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 220
    Points : 19 549
    Points
    19 549
    Billets dans le blog
    25
    Par défaut
    C'est possible dès la 9i, me semble-t-il

    Pour y pallier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select *
    from A, B
    where A.id += B.id
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Avril 2003
    Messages : 70
    Points : 50
    Points
    50
    Par défaut
    alors je précise je suis sous Oracle 8i...

  4. #4
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 220
    Points : 19 549
    Points
    19 549
    Billets dans le blog
    25
    Par défaut
    Ben voilà !

    Au Inner join équivaut le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select *
    from A, B
    where A.id = B.id
    Au outer Join équivaut (à quelques exceptions prêtes) le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select *
    from A, B
    where A.id += B.id
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  5. #5
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Avril 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Avril 2003
    Messages : 70
    Points : 50
    Points
    50
    Par défaut
    bon alors au risque d'insister :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SELECT  MVXJDTA.MITMAS.MMITNO, MVXJDTA.MITMAS.MMITDS, CUSJDTA.OPRBAZ.ODZCIT
    FROM  MVXJDTA.MITMAS, CUSJDTA.OPRBAZ
    WHERE  MVXJDTA.MITMAS.MMITNO  = CUSJDTA.OPRBAZ.ODITNO 
    AND CUSJDTA.OPRBAZ.ODCUNO='930815'
    ça marche impeccable, noter que c'est l'équivalent d' un INNER JOIN
    par contre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SELECT  MVXJDTA.MITMAS.MMITNO, MVXJDTA.MITMAS.MMITDS, CUSJDTA.OPRBAZ.ODZCIT
    FROM  MVXJDTA.MITMAS, CUSJDTA.OPRBAZ
    WHERE  MVXJDTA.MITMAS.MMITNO  += CUSJDTA.OPRBAZ.ODITNO 
    AND CUSJDTA.OPRBAZ.ODCUNO='930815'
    la ça marche pas ....
    j'ai droit à ce superbe message d'erreur :

    Error: ORA-00936: missing expression (State:37000, Native Code: 3A8)

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Isildur
    bon alors au risque d'insister :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SELECT  MVXJDTA.MITMAS.MMITNO, MVXJDTA.MITMAS.MMITDS, CUSJDTA.OPRBAZ.ODZCIT
    FROM  MVXJDTA.MITMAS, CUSJDTA.OPRBAZ
    WHERE  MVXJDTA.MITMAS.MMITNO  = CUSJDTA.OPRBAZ.ODITNO 
    AND CUSJDTA.OPRBAZ.ODCUNO='930815'
    ça marche impeccable, noter que c'est l'équivalent d' un INNER JOIN
    par contre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SELECT  MVXJDTA.MITMAS.MMITNO, MVXJDTA.MITMAS.MMITDS, CUSJDTA.OPRBAZ.ODZCIT
    FROM  MVXJDTA.MITMAS, CUSJDTA.OPRBAZ
    WHERE  MVXJDTA.MITMAS.MMITNO  += CUSJDTA.OPRBAZ.ODITNO 
    AND CUSJDTA.OPRBAZ.ODCUNO='930815'
    la ça marche pas ....
    j'ai droit à ce superbe message d'erreur :

    Error: ORA-00936: missing expression (State:37000, Native Code: 3A8)
    Et ça ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT  MVXJDTA.MITMAS.MMITNO, MVXJDTA.MITMAS.MMITDS, CUSJDTA.OPRBAZ.ODZCIT
    FROM  MVXJDTA.MITMAS, CUSJDTA.OPRBAZ
    WHERE  MVXJDTA.MITMAS.MMITNO (+) = CUSJDTA.OPRBAZ.ODITNO 
    AND CUSJDTA.OPRBAZ.ODCUNO='930815'
    N'oubliez pas d'éditer votre 1er message et d'ajouter [RESOLU] au titre de votre message une fois que vous avez la réponse !

  7. #7
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 073
    Points
    8 073
    Par défaut
    Le signe plus doit être mis entre parenthèses pour être interprété comme symbole de jointure externe.

    On écrit donc, selon le sens de la jointure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT...
    FROM A, B
    WHERE A.champ(+) = B.champ;
    ou 
    SELECT...
    FROM A, B
    WHERE A.champ = B.champ(+);
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  8. #8
    ST1
    ST1 est déconnecté
    Nouveau Candidat au Club
    Inscrit en
    Juin 2003
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Google ou comment trouver!!!
    Citation Envoyé par Isildur
    Bonjour, comment pallier l'absence de l'opérateur JOIN sous oracle, notamment la possibilté de faire un LEFT JOIN .

    merci de votre aide.
    Bonjour je sais que le poste est ferme mais je ne peux laisser cela sans une petite info en plus ( http://download-east.oracle.com/docs...01/lexical.htm )<= pour valider ce que je dis.

    Isildur avant d'ecrie des choses comme cela svp faite une recheche!!
    une recherche de 2 secondes pour trouver la reponse.... c'est peu d'effort.

    Je ne suis pas remonte plus haut que la version 7
    [Both Oracle7 and Rdb7 SQL support implicit joins. An example of achieving this is by listing more than one table in the FROM clause.]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requete qui ne passe pas sous Oracle
    Par MaelstroeM dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 06/09/2007, 18h14
  2. Réponses: 3
    Dernier message: 06/06/2007, 19h45
  3. LEFT JOIN sous Oracle 8i
    Par alexadvance dans le forum Oracle
    Réponses: 11
    Dernier message: 02/11/2005, 12h21
  4. requette sql qui passe sous oracle 9i mais pas en 8i
    Par maxidoove dans le forum Oracle
    Réponses: 3
    Dernier message: 21/10/2005, 11h59
  5. LEFT JOIN avec Oracle 8i ne va pas... doit utiliser (+)
    Par loikiloik dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/04/2004, 17h38

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