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 :

"fusion" de trois tables avec traitement SQL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Par défaut "fusion" de trois tables avec traitement SQL
    Bonsoir tout le monde!

    Voilà un nouveau problème :

    J'ai trois tables ayant cette structure:

    Agence 1
    date-------------note
    17/02/03---------A
    12/01/98---------B
    12/07/02---------C

    Agence 2
    date-------------note
    01/05/01---------A
    29/10/03---------B
    24/04/05---------C

    Agence 3
    date-------------note
    17/09/03---------A
    22/11/05---------B

    je souhaiterais construire une seule table en regroupant ces informations de la façon suivante :

    Il faut que je garde toutes les dates (sauf si deux dates sont identiques, auquel cas, ça ne correspond qu'à une ligne) et que je fasse correspondre les notes à chaque date :

    Si la note est inconnue à une date, on met Null

    Ainsi, avec mon exemple, on obtiendrait:

    -------------note agence 1-----note agence 2-------- note agence 3

    22/11/05-----------A-----------------C--------------------B
    24/04/05-----------A-----------------C--------------------A
    29/10/03-----------A-----------------B--------------------A
    17/09/03-----------A-----------------A--------------------A
    17/02/03-----------A-----------------A--------------------Null
    12/07/02-----------C-----------------A--------------------Null
    01/05/01-----------B-----------------A--------------------Null
    12/01/98-----------B-----------------null------------------Null

    Merci pour vos propositions; j'avoue ne pas savoir par où commencer

  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
    Par défaut
    Les deux systèmes : une table par agence et une colonne par agence sont aussi mauvais l'un que l'autre, la bonne solution est : une agence par ligne...

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Par défaut
    hum.. et comment serait-ce possible ?

    d'autre part, j'ai simplifié un peu, car normalement plusieurs dates correspondent à une entité :
    ainsi, on a plutot :

    Table 1 = Agence 1
    Entité-----date-----------note
    E1-------17/02/03---------A
    E1-------12/01/98---------B
    E1-------12/07/02---------C

    Table 2 = Agence 2
    Entité-----date-----------note
    E1-------01/05/01---------A
    E1-------29/10/03---------B
    E1-------24/04/05---------C

    Table 3 = Agence 3
    Entité-----date-----------note
    E1-------17/09/03---------A
    E1-------22/11/05---------B



    E2 avec d'autres dates (simple copier/coller ici)
    Agence 1
    Entité-----date-----------note
    E2-------17/02/03---------A
    E2-------12/01/98---------B
    E2-------12/07/02---------C

    Agence 2
    Entité-----date-----------note
    E2-------01/05/01---------A
    E2-------29/10/03---------B
    E2-------24/04/05---------C

    Agence 3
    Entité-----date-----------note
    E2-------17/09/03---------A
    E2-------22/11/05---------B

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Par défaut
    Citation Envoyé par Médiat
    Les deux systèmes : une table par agence et une colonne par agence sont aussi mauvais l'un que l'autre, la bonne solution est : une agence par ligne...
    ah! sur une ligne, tu aurais :
    3 fois la même date :

    22/11/05-----------A--------------Agence1
    22/11/05-----------C--------------Agence2
    22/11/05-----------A--------------Agence3

    24/04/05-----------A--------------Agence1
    24/04/05-----------C--------------Agence2
    24/04/05-----------A--------------Agence3


    29/10/03-----------A--------------Agence1
    29/10/03-----------B--------------Agence2
    29/10/03-----------A--------------Agence3

    tu le vois ainsi ?

  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
    Par défaut
    Oui, si tu regardes bien, tu as 3 fois la même date, 3 fois la même agence, mais une seule fois le couple (Agence, Date)... Et je ne vois pas où est le problème. Tu verras que les choses seront beaucoup plus simple lorsque qu'une 4ième Agence va arriver...

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Par défaut
    Ok, merci pour ton point de vue, je cherche dans cette voie
    A+

  7. #7
    j6m
    j6m est déconnecté
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 87
    Par défaut
    l'intérét du relationnel c'est de travailler avec des ensembles. Les histoires de normalisation sont secondaires voire inutiles.
    Ici on voit bien un seul ensemble de données E(numagence,entité,date, note)
    E={(Agence 1,E1-------17/02/03---------A),
    (Agence1,E1-------12/01/98---------B),
    ....
    (Agence 3,E1-------17/09/03---------A)
    }
    donc une seule table.
    Si vraiment le revival eighties te branche, tu peux faire comme si ton disque dur faisait 200 Mo et mettre des tables de correspondance pour "déporter " les infos répétitives comme le nom de l'agence. Et ça sera normalisé, et sémantiquement adéquat.

Discussions similaires

  1. Requête sur trois tables avec deux sommes
    Par gpz1963 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/09/2013, 17h38
  2. [SQL] Fusion plus de 2 tables avec proc sql
    Par Olive2011 dans le forum SAS Base
    Réponses: 10
    Dernier message: 06/07/2012, 15h08
  3. Réponses: 1
    Dernier message: 16/11/2009, 17h53

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