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 :

Comparer deux versions d'une même table [MySQL-5.0]


Sujet :

Requêtes MySQL

  1. #1
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 597
    Points : 886
    Points
    886
    Par défaut Comparer deux versions d'une même table
    Bonjour.
    j'ai deux versions d'une même table, ayant le même nombre d'enregistrement, dont seuls les valeurs de certains enregistrements diffèrent. Comment trouver élégamment ces enregistrements ? pour l'instant, je n'ai rien trouvé d'autre qu'un enrobage en php qui, pour chaque enregistrement identifié par le même champs id, compare les deux CONCAT(...) de tous les champs. Mais il y a peut-être plus léger.
    Merci d'avance pour vos suggestions

    Yves.
    Participez vous aussi !
    Message utile
    Discussion résolue

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Si les tables concernées ont très peu de colonnes (et pas trop larges) et beaucoup de lignes, il faudrait tenter avec une vue indexée ("CREATE VIEW WITH SCHEMABINDING"), avec seulement 2 colonnes dans cette vue : 'lidentifiant unique d'une part, et la concaténation des autres colonnes d'autre part. Construire ce type de vue sur les 2 tables puis faire une requete where not exists pour détecter les écarts.

    Sous réserve bien sur que l'identifiant unique ne soit pas une identity column

  3. #3
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 597
    Points : 886
    Points
    886
    Par défaut
    La table a environ 60 champs dont plusieurs de type TEXT et environ 2000 enregistrements. Le champ id est l'index primaire en autoincrément.
    Participez vous aussi !
    Message utile
    Discussion résolue

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Si l'identifiant est une identity column, alors vous ne pouvez pas rapprocher les 2 tables sur cet identifiant, sauf si l'une des tables est une copie de l'autre à un instant "t" et sous réserve qu'il n'y ait pas eu de réutilisation d'identifiant dans l'intervalle

    Pour 2000 lignes, votre solution est tout à fait satisfaisante sous réserve d'utiliser un identifiant applicable de part et d'autre

    PS : le terme "champ" est applicable dans un formulaire, pas dans une table où l'on parle de colonne

  5. #5
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 597
    Points : 886
    Points
    886
    Par défaut
    J'ai effectivement utilisé une requète utilisant une comparaison de CONCAT sur les champs les plus importants et ça a bien fonctionné, merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE CONCAT(t1.col1,t1.colx,t1.coly) NOT LIKE CONCAT(t2.col1,t2.colx,t2.coly)
    Yves.
    Participez vous aussi !
    Message utile
    Discussion résolue

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

Discussions similaires

  1. Comparer deux lignes d'une même table dans une bdd
    Par Pierrot33 dans le forum Général Java
    Réponses: 3
    Dernier message: 19/11/2011, 19h04
  2. Comparer deux colonnes d'une même table
    Par snoopy69 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 08/01/2008, 10h05
  3. Réponses: 13
    Dernier message: 20/04/2007, 17h30
  4. Réponses: 8
    Dernier message: 19/04/2007, 19h41
  5. Nls_lang : deux codage dans une même table
    Par Oraman dans le forum Oracle
    Réponses: 6
    Dernier message: 22/08/2006, 12h36

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