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 :

Problème de FULL OUTER JOIN


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 57
    Points : 38
    Points
    38
    Par défaut Problème de FULL OUTER JOIN
    Bonjour !

    J'ai une requête dans laquelle je dois faire (je crois) un FULL OUTER JOIN. Par contre, j'ai toujours une erreur me disant que ma commande SQL ne se termine pas correctement. J'utilise le FULL OUTER JOIN parce que je dois avoir les données des deux tables indépendament qu'il y est une correspondance dans l'autre table ou non.

    Peut-être qu'il y a une solution plus simple ?
    Es-ce que quelqu'un est en mesure de m'aider ?

    Merci

    Voici ma requête :

    SELECT a.date_transaction, a.nomCaissier, b.montant_depot, a.montant_ventes
    FROM
    (SELECT TO_CHAR(t.date_transaction,'DD/MM/YYYY') date_transaction,
    u.nom || ', ' || u.prenom nomCaissier, t.usr_id,
    SUM(t.prix) montant_ventes
    FROM SGV_TAB_TRANSACTIONS t, SGV_TAB_USAGERS u
    WHERE u.ID = t.USR_ID
    AND t.date_transaction >= TO_DATE('30-04-2007 00:00:00', 'DD/MM/YYYY HH24:MI:SS')
    AND t.date_transaction <= TO_DATE('30-04-2007 23:59:59', 'DD/MM/YYYY HH24:MI:SS')
    AND t.usr_id = '392'
    GROUP BY TO_CHAR(t.date_transaction,'DD/MM/YYYY'), u.nom || ', ' || u.prenom, t.usr_id ) a,
    FULL OUTER JOIN (SELECT TO_CHAR(mc.date_transaction,'DD/MM/YYYY') DATE_TRANSACTION,
    u.nom || ', ' || u.prenom nomCaissier, mc.usr_id,
    SUM(mc.montant_depot) montant_depot
    FROM SGV_TAB_MONTANT_CAISSE mc, SGV_TAB_USAGERS u
    WHERE u.ID = mc.USR_ID
    AND mc.date_transaction >= TO_DATE('30-04-2007 00:00:00', 'DD/MM/YYYY HH24:MI:SS')
    AND mc.date_transaction <= TO_DATE('30-04-2007 23:59:59', 'DD/MM/YYYY HH24:MI:SS')
    AND mc.usr_id = '392'
    GROUP BY TO_CHAR(mc.date_transaction,'DD/MM/YYYY'), u.nom || ', ' || u.prenom, mc.usr_id ) b
    ON a.date_transaction = b.date_transaction
    AND a.usr_id = b.usr_id

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 360
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 360
    Points : 20 377
    Points
    20 377
    Par défaut
    on utilise la clause GROUP BY toujours à la fin en principe ; le OUTER JOIN ...ON est coupé en 2 à cause de cette clause

  3. #3
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    Citation Envoyé par Mat.M
    on utilise la clause GROUP BY toujours à la fin en principe ; le OUTER JOIN ...ON est coupé en 2 à cause de cette clause
    Le problème n'est pas là car ce sont des sous-requêtes. Le problème vient surtout de mélanger 2 syntaxes diffèrentes. On ne fait pas SELECT * FROM a, FULL OUTER JOIN b. La virgule est de trop.

    gibea00 , pour améliorer la lisibilité il faut indenter et utiliser la balise CODE du forum (icône #).


    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
    SELECT a.date_transaction, a.nomCaissier, b.montant_depot, a.montant_ventes
    FROM
      (SELECT TO_CHAR(t.date_transaction,'DD/MM/YYYY') date_transaction,
       u.nom || ', ' || u.prenom nomCaissier, t.usr_id,
       SUM(t.prix) montant_ventes
       FROM SGV_TAB_TRANSACTIONS t, SGV_TAB_USAGERS u
       WHERE u.ID = t.USR_ID
       AND t.date_transaction >= TO_DATE('30-04-2007 00:00:00', 'DD/MM/YYYY HH24:MI:SS')
       AND t.date_transaction <= TO_DATE('30-04-2007 23:59:59', 'DD/MM/YYYY HH24:MI:SS') AND t.usr_id = '392'
       GROUP BY TO_CHAR(t.date_transaction,'DD/MM/YYYY'), u.nom || ', ' || u.prenom, t.usr_id 
       ) a --j'ai enlevé la virgule
    FULL OUTER JOIN 
      (SELECT TO_CHAR(mc.date_transaction,'DD/MM/YYYY') DATE_TRANSACTION,
      u.nom || ', ' || u.prenom nomCaissier, mc.usr_id,
      SUM(mc.montant_depot) montant_depot
      FROM SGV_TAB_MONTANT_CAISSE mc, SGV_TAB_USAGERS u
      WHERE u.ID = mc.USR_ID
      AND mc.date_transaction >= TO_DATE('30-04-2007 00:00:00', 'DD/MM/YYYY HH24:MI:SS')
      AND mc.date_transaction <= TO_DATE('30-04-2007 23:59:59', 'DD/MM/YYYY HH24:MI:SS') AND mc.usr_id = '392'
      GROUP BY TO_CHAR(mc.date_transaction,'DD/MM/YYYY'), u.nom || ', ' || u.prenom, mc.usr_id 
      ) b
    ON a.date_transaction = b.date_transaction
    AND a.usr_id = b.usr_id
    sinon je trouve un peu bizarre la requête. A mon avis on peut largement la simplifier vu que les 2 sous-requêtes sont très proches

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

Discussions similaires

  1. Problème avec un FULL OUTER JOIN
    Par sky_perrinos dans le forum Requêtes
    Réponses: 3
    Dernier message: 07/04/2014, 15h34
  2. Erreur FULL OUTER JOIN
    Par SwiTz dans le forum Requêtes
    Réponses: 14
    Dernier message: 02/04/2009, 13h33
  3. [ORACLE 9i] Equivalent du Full Outer Join
    Par Worldofdada dans le forum Oracle
    Réponses: 10
    Dernier message: 02/11/2005, 14h56
  4. Problème avec left outer join
    Par jgfa9 dans le forum Requêtes
    Réponses: 1
    Dernier message: 22/08/2005, 21h07
  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