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

Requêtes MySQL Discussion :

comparaison entre 2 tables


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 26
    Points : 20
    Points
    20
    Par défaut comparaison entre 2 tables
    Bonjour,

    J'ai 2 tables qui contiennent à 95% les mêmes champs.
    Chaque enregistrement de chaque table est unique et identifiable via un identifiant fonctionnel unique.
    Mon objectif est de prendre la table 1 de la comparer avec la table 2 sur 95% des champs. J'ai une table "technique" dans laquelle sont répertoriés tous mes champs.
    3 cas distincts apparaissent au niveau de ma comparaison :
    - aucun champ n'a bougé, je tague 1
    - au moins un champ a bougé je tague 2
    - identifiant fonctionnel absent de la table 2 je tague 3

    Auriez-vous une idée sur la manière de procéder sachant que mon objectif est d'utiliser la table technique afin de paramétrer ma comparaison plutôt que de coder en dur les noms de tous les champs ?

    Merci pour vos idées

    Halina

  2. #2
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    ce que tu veux comparer c'est que l'enregistrement avec l'id 1 dans la table 1 est identique ou différent de l'enregistrement avec l'id 1 dans la table 2? Et cela pour tous les enregistrements?

    Si c'est le cas, tu peux faire un INSERT muni d'un select avec une jointure externe. Malheureusement, j'ai pas le temps de l'écrire. Post la structure de tes tables si tu ne trouves pas, je repasserai ce soir pour t'aider.

    PS: remarque, j'ai jamais essayé un OUTER JOIN dans un INSERT...

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 26
    Points : 20
    Points
    20
    Par défaut comparaison entre 2 tables
    "ce que tu veux comparer c'est que l'enregistrement avec l'id 1 dans la table 1 est identique ou différent de l'enregistrement avec l'id 1 dans la table 2? Et cela pour tous les enregistrements? "

    Effectivement mais attention je ne veux pas comparer la totalité de l'enregistrement mais une partie ...

    Ce que je veux voir c'est si pour 2 id identiques, une partie des autres champs est aussi identique.
    Car si un id est absent de la table 2 effectivement je fais un insert mais si un id est présent avec des modifications des champs je fais un update et dans un champ prévu pour de la table 2 j'entre la date de l'update, si aucune modification de champ, je ne fais rien.
    Certaines de mes tables contenant 150 champs à comparer, je préfererais effectué du paramétrage via ma table des métadonnées.

  4. #4
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Donc a priori, il y aurait une solution qui se découperait en 3 requete. une pour le tag 1, une pour le tag 2 et la derniere pour le cas 3. Sachant que les deux premières pourraient être regroupées en une seule.

    Tu pourrais poster la structure de tes tables stp ?

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 26
    Points : 20
    Points
    20
    Par défaut comparaison entre 2 tables
    Voici 2 tables exemples :
    Dans la table 2 on voit apparaitre une clé primaire et des clés étrangères pointant vers d'autres tables.
    idfonc pour identifiant fonctionnel

    table 1
    idSe int(11)
    idE int(11)
    idPa int(11)
    idUn int(11)
    dt_inH datetime
    dt_outH datetime
    dt_inU datetime
    dt_outU datetime
    hr_inU varchar(10)
    hr_outU varchar(10)
    idfonc varchar(20)
    table 2
    PKse int(10)
    FKpa int(10)
    FKet int(10)
    idSe int(11)
    idE int(11)
    idPa int(11)
    idUn int(11)
    dt_inH datetime
    dt_outH datetime
    dt_inU datetime
    dt_outU datetime
    hr_inU varchar(10)
    hr_outU varchar(10)
    idfonc varchar(20)
    dtcreatech date
    dtmoditech date

  6. #6
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    et comment voudrais-tu utiliser ta table technique?

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 26
    Points : 20
    Points
    20
    Par défaut comparaison entre 2 tables
    En fait dans ma table technique, apparaissent tous les champs.
    L'objectif serait de ne pas coder en dur les requêtes de comparaison, je prends une colonne dans la table technique et je la marque à 1 pour signifier que mon champ entre dans ma requête de comparaison.

    Vraiment mon objectif est d'éviter de coder en dur, si c'est trop compliqué je finirai pourtant par le faire ...

  8. #8
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut
    Alors la, je sèche. Ca ressemble un peu à de l'introspection de table. Notion qui m'est complètement inconnu en SQL. J'ai regardé du coté du caractère '`', mais j'ai pas trouvé ton bonnheur. En fait, il serait surement plus aisé de gérer la requête en traitant ta table technique par le code de ton applicatif. Enfin... si l'introspection est vraiment impossible.

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 26
    Points : 20
    Points
    20
    Par défaut comparaison entre 2 tables
    En fait je pourrais me passer d'utiliser ma table technique si je pouvais faire une espèce de
    "update table2 set * values (select * from table1)"
    C'est à dire que je considère que tous les champs de table1 sont bien présents dans table2 l'inverse n'étant pas vrai ...

    est-ce que t'aurais une idée dans ce cas ?

  10. #10
    Membre expérimenté
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Points : 1 351
    Points
    1 351
    Par défaut Re: comparaison entre 2 tables
    Citation Envoyé par halina
    est-ce que t'aurais une idée dans ce cas ?
    Peut-être que oui... Peut-être faudrait-il voir du coté du mot-clé REPLACE. C'est comme un insert, mais si la clé primaire est déjà présente dans le fichier il se contente de remplacer les autres champs. Par contre, pour que ça marche, il faudrait un minimum de réflexion sur l'ordre des champs de tes tables. Si tu veux conserver les '*' bien sûr

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 26
    Points : 20
    Points
    20
    Par défaut comparaison entre 2 tables
    Ok en tout cas merci pour les conseils Adjanakis.

    A bientôt

    Halina

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

Discussions similaires

  1. SQL2000 comparaison entre deux tables
    Par troika dans le forum Développement
    Réponses: 1
    Dernier message: 16/08/2009, 18h38
  2. Réponses: 2
    Dernier message: 09/02/2009, 15h36
  3. comparaison entre deux tables
    Par mdh12 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/11/2008, 15h57
  4. Comparaison entre deux tables
    Par Bes74 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 09/08/2007, 20h04
  5. Comparaison entre deux champs de deux tables différentes
    Par liam81150 dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/09/2005, 20h53

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