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 :

full outer join


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    'je ne suis qu'un stagiaire' ^^
    Inscrit en
    Janvier 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : 'je ne suis qu'un stagiaire' ^^
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 42
    Par défaut full outer join
    Bonjour,

    Voici une requête pour une multijointure qui marche très bien avec le logiciel SAS en proc sql. Mais j'essai de la faire fonctionner directement en SQL (avec HeidiSQL) :

    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
    SELECT coalesce(A.idpat, B.idpat, C.idpat,D.idpa, E.id, F.idpat) 
    		AS idpat,
    		A.mode, B.peri, C.sem, D.etat, E.dia, F.loge
    FROM base.table1 as A 
    			full outer  JOIN base.table2 as B 
    			on A.idpat = B.idpat
    			full outer  JOIN base.table3 as  C 
    			on A.idpat = C.idpat
    			full outer  JOIN base.table4 as  D 
    			on A.idpat= D.idpat
    			full outer  JOIN base.table5 as  E 
    			on A.idpatient_examen = E.idpatient_examen
    			full outer  JOIN base.table6 as  F 
    			on A.idpa = F.idpat
    ORDER BY idpat
    J'ai une erreur retournée :
    SQL error 1064 error in your SQL syntax
    Mais je ne vois pas où est le problème.. sachant que cette même requête me donne le résultat que je veux sous SAS...

    En changeant le full outer join par right or left outerjoin, il n'y a pas de message d'erreur, mais il me fait un "full outer join"...

    Merci d'avance

  2. #2
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    Bonjour,

    MySQL ne supporte pas le FULL OUTER JOIN. (cf http://dev.mysql.com/doc/refman/5.6/en/join.html)

    Vous trouverez comment résoudre votre problème ici : http://www.developpez.net/forums/d14...r-join-resolu/

    Cordialement,

    Arkhena

  3. #3
    Membre averti
    Homme Profil pro
    'je ne suis qu'un stagiaire' ^^
    Inscrit en
    Janvier 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : 'je ne suis qu'un stagiaire' ^^
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 42
    Par défaut
    ok merci!

  4. #4
    Membre averti
    Homme Profil pro
    'je ne suis qu'un stagiaire' ^^
    Inscrit en
    Janvier 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : 'je ne suis qu'un stagiaire' ^^
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 42
    Par défaut
    Du coup, j'ai suivi le lien et l'idée lancée, ce qui donne d'abord une jointure LEFT puis RIGHT, et je rassemble les 2 tables avec un UNION ALL, comme cela :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    CREATE TEMPORARY TABLE new1 as 
    SELECT coalesce(A.idpat, B.idpat, C.idpat,D.idpa, E.id, F.idpat) 
    		AS idpat,
    		A.mode, B.peri, C.sem, D.etat, E.dia, F.loge
    FROM base.table1 AS A 
    			left OUTER  JOIN base.table2 AS B 
    			ON A.idpat = B.idpat
    			left OUTER  JOIN base.table3 AS  C 
    			ON A.idpat = C.idpat
    			left OUTER  JOIN base.table4 AS  D 
    			ON A.idpat= D.idpat
    			left OUTER  JOIN base.table5 AS  E 
    			ON A.idpatient_examen = E.idpatient_examen
    			left OUTER  JOIN base.table6 AS  F 
    			ON A.idpa = F.idpat
    ORDER BY idpat ;
     
    CREATE TEMPORARY TABLE new2 as 
    SELECT coalesce(A.idpat, B.idpat, C.idpat,D.idpa, E.id, F.idpat) 
    		AS idpat,
    		A.mode, B.peri, C.sem, D.etat, E.dia, F.loge
    FROM base.table1 AS A 
    			right OUTER  JOIN base.table2 AS B 
    			ON A.idpat = B.idpat
    			right OUTER  JOIN base.table3 AS  C 
    			ON A.idpat = C.idpat
    			right OUTER  JOIN base.table4 AS  D 
    			ON A.idpat= D.idpat
    			right OUTER  JOIN base.table5 AS  E 
    			ON A.idpatient_examen = E.idpatient_examen
    			right OUTER  JOIN base.table6 AS  F 
    			ON A.idpa = F.idpat
    ORDER BY idpat ;
     
    select * from new1 UNION ALL select * from new2 ORDER BY idpat ;
    Sauf qu'en résultat, cela me sort uniquement les observations de la table base.table1 obtenu par le 1er left join...

    les autres left join non pas fonctionné, et les right join me retournent aucun résultats...

    j'ai l'impression que j'ai la bonne syntaxe pourtant? je suis sur MySQL!

    merci d'avance

Discussions similaires

  1. L'équivalent de FULL OUTER JOIN sous ACCESS
    Par Le Pharaon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 24/03/2013, 12h36
  2. Erreur FULL OUTER JOIN
    Par SwiTz dans le forum Requêtes
    Réponses: 14
    Dernier message: 02/04/2009, 13h33
  3. [Oracle 9] Probleme. FULL OUTER JOIN
    Par West01 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/10/2006, 07h46
  4. [ORACLE 9i] Equivalent du Full Outer Join
    Par Worldofdada dans le forum Oracle
    Réponses: 10
    Dernier message: 02/11/2005, 14h56
  5. Remplacer FULL OUTER JOIN
    Par funrighd dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/07/2004, 10h54

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