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 :

Auto jointure complexe


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 34
    Points
    34
    Par défaut Auto jointure complexe
    Bonjour

    Mon probleme est le suivant: j'ai une maquette à mettre en place sous cognos et pour la preparation des tables, je suis coincé.

    ma dimension Temps contient:
    Date1, Date2....
    la date 2 est l'equivalente de Date1 à N-1
    DATE_1 DATE_2
    12/30/2006 12/31/2005
    12/29/2006 12/30/2005
    12/28/2006 12/29/2005
    12/27/2006 12/28/2005

    Ma table de fait contient la DATE_1 et un chiffre d'affaire

    Je souhaite creer une colonne suplementaire dans le table de faits qui contiendra le chiffre d'affaire de la date DATE_2. Puisque DATE_1 et DATE_2 sont pere-fils, l'information recherchée existe bien dans la table de fait.

    Comment l'isoler?

    Merci d'avance

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT t.Date_1, f1.Montant, t.Date_2, f2.Montant
    FROM lesFaits f1 INNER JOIN leTemps t   ON f1.laDate = t.Date_1
                     LEFT JOIN  lesFaits f2 ON t.Date_2  = f2.laDate
    Comme tu ne donnes pas beaucoup d'info j'ai considéré que la date était la clé primaire de la table de faits, si ce n'est pas le cas (probable), il faut rajouter des confitions entre f1 et f2.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    La date est bien cle de la table de faits.
    J'essai cette solution et je fait un retour

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT t.Date, f1.CA, t.DateN_1, f2.CA 
    FROM Faits f1 INNER JOIN [TIME] t   ON f1.Date = t.Date 
                     LEFT JOIN  Faits f2 ON t.DateN_1  = f2.Date;
    Ca ne marche passssss

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par ricobye
    Ca ne marche passssss
    Mais encore ?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par Médiat
    Citation Envoyé par ricobye
    Ca ne marche passssss
    Mais encore ?
    Voici le message que je recois à l'execution de la requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur de syntaxe: operateur absent dans l'expression f1.Date = t.Date 
    LEFT JOIN  Faits f2 ON t.DateN_1  = f2.Date

  7. #7
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Quel est ton moteur de base de données et sa version ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par Médiat
    Quel est ton moteur de base de données et sa version ?
    Je fais les test sous access

  9. #9
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Alors essaye, mais sans garantie (je ne connais pas access)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT t.Date, f1.CA, t.DateN_1, f2.CA 
    FROM (Faits f1 INNER JOIN [TIME] t   ON f1.Date = t.Date )
                   LEFT JOIN  Faits f2 ON t.DateN_1  = f2.Date;
    ou même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT t.Date, f1.CA, t.DateN_1, f2.CA 
    FROM Faits f1 INNER JOIN ([TIME] t   
                  LEFT JOIN  Faits f2 ON t.DateN_1  = f2.Date) ON f1.Date = t.Date ;

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    La requete passe mais la colonne du second chiffre d'affaire reste vide... je vais bidouiller ds tous les sens pour avoir des valeurs. Je te remercie et te tiens informé

  11. #11
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Je viens de faire un essai avec ORACLE et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT t.Date_1, f1.Montant, t.Date_2, f2.Montant 
    FROM lesFaits f1 INNER JOIN leTemps t   ON f1.laDate = t.Date_1 
                     LEFT JOIN  lesFaits f2 ON t.Date_2  = f2.laDate
    et j'ai bien le résultat attendu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DATE_1       VALEUR      DATE_2     VALEUR
    01/01/2005    12        02/01/2005      25
    02/01/2005    25        03/01/2005

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 34
    Points
    34
    Par défaut
    La requete est donc juste. J'ai des resultats aussi sur microMachin mais ils sont aberrants... J'essai de voir dou vient l'erreur...

Discussions similaires

  1. auto jointure tres complexe
    Par twixster dans le forum Requêtes
    Réponses: 6
    Dernier message: 13/05/2009, 17h20
  2. [MySQL 4.0.15] Jointure complexe
    Par Carter dans le forum Langage SQL
    Réponses: 4
    Dernier message: 03/02/2006, 15h31
  3. Trier la hierarchie d'une auto-jointure
    Par Oberown dans le forum Langage SQL
    Réponses: 8
    Dernier message: 17/10/2005, 17h18
  4. resultat d'une auto jointure
    Par slc dans le forum Requêtes
    Réponses: 6
    Dernier message: 30/09/2004, 14h54
  5. Auto jointure speciale
    Par kv000 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 14/04/2004, 14h02

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