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

MySQL Discussion :

Réconciliation entre deux tables


Sujet :

MySQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Réconciliation entre deux tables
    Bonjour,

    Je travaille sur un projet de réconciliation entre deux tables:

    -Données 1ère table:

    ANumber BNumber Date H1
    0661000021 0617558668 24/08/2010 200625
    0661000021 0617558668 24/08/2010 200626
    0661000021 0617558668 24/08/2010 200628
    0661000021 0617558668 24/08/2010 200627
    0661000021 0669333294 24/08/2010 200634
    -Données 2ème Table:

    Date H2 ANumber BNumber
    24/08/2010 200618 0661000021 0617558668
    24/08/2010 200621 0661000021 0617558668
    24/08/2010 200625 0661000021 0669333294
    Je veux obtenir le résultat suivant en utilisant une requête sql:

    ANumber BNumber H1 H2 Diff Abs
    0661000021 0617558668 200625 200621 -4 4
    0661000021 0617558668 200626 200618 -8 8
    0661000021 0669333294 200634 200625 -9 9
    Donc, la requête doit rapprocher les données entre ANumber et BNumber des 2 tables, calculer la valeur absolu de la différence entre les heures et prendre le minimum si l'heure de la 2ème table n'est pas déjà attribuée.

    Merci d'avance

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    À première vue il s'agit d'une simple soustraction entre deux colonnes avec une jointure entre deux tables, donc pas très compliqué.

    Qu'as-tu essayé comme requête ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    J'ai essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT t1.ANumber, t1.BNumber, t1.Heure as H1, t2.Heure as H2, 
      (t2-t1) AS difference,
      ABS(t2-t1) as signed)) AS ABS 
    from t2, t1 
    where (t1.BNumber=t2.BNumber) 
      AND (t1.Date=t2.Date) 
    ORDER BY ABS(H2-H1);
    mais le résultat est le suivant:

    ANumber BNumber H1 H2 DifferenceAbs
    0661000021 0617558668 200625 200621 -4 4
    0661000021 0617558668 200626 200621 -5 5
    0661000021 0617558668 200627 200621 -6 6
    0661000021 0617558668 200625 200618 -7 7
    0661000021 0617558668 200628 200621 -7 7
    0661000021 0617558668 200626 200618 -8 8
    0661000021 0669333294 200634 200625 -9 9
    0661000021 0617558668 200627 200618 -9 9
    0661000021 0617558668 200628 200618 -10 10

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    t2 et t1 sont tes tables et tu fais une différence entre les tables au lieu de faire une différence entre les colonnes !

    De plus, tu devrais utiliser la syntaxe normalisée depuis 1992 pour les jointures !

    Enfin, tes parenthèses dans le WHERE sont inutiles.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci infiniment pour ta réponse mais je ne saisis toujours pas comment je dois procéder. Aurais tu la gentillesse de m'écrire la requête qui doit afficher le résultat que je souhaite (voir mon premier message).

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Voici comment ta requête aurait dû être écrite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT t1.ANumber, t1.BNumber, t1.Heure AS H1, t2.Heure AS H2, 
      (t2.Heure -t1.heure) AS difference,
      ABS(t2.Heure - t1.heure) AS valeur_absolue
    FROM t2
    INNER JOIN t1 ON t1.BNumber = t2.BNumber
      AND t1.Date = t2.Date 
    ORDER BY ABS(t2.Heure - t1.heure);
    Elle devrait répondre à cette partie du besoin que tu as exprimé dans ton premier message :
    la requête doit rapprocher les données entre ANumber et BNumber des 2 tables, calculer la valeur absolu de la différence entre les heures
    Par contre, je ne comprends pas la dernière partie :
    et prendre le minimum si l'heure de la 2ème table n'est pas déjà attribuée
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Double somme (SUM) entre deux tables ?
    Par kibodio dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/02/2005, 22h26
  2. PROBLEME DE JOINTURE ENTRE DEUX TABLE
    Par DarkMax dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/01/2005, 15h11
  3. Transfert entre deux tables
    Par nyarla01 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/10/2004, 14h36
  4. [VB.NET] ComboBox lien entre deux tables
    Par VDB1 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/07/2004, 12h15
  5. Jointure entre deux tables et résultat
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2004, 14h50

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