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 2 resultsets


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier Avatar de rgomes
    Homme Profil pro
    IT Developer JAVA Senior
    Inscrit en
    Juin 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : IT Developer JAVA Senior
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 128
    Points : 76
    Points
    76
    Par défaut Comparer 2 resultsets
    Bonjour à tous,

    Existe t-il une solution technique pour comparer le résultat d'une requête exécutée à 2 intervalles de temp différents et donc, voir s'il existe une différence, si la valeutr ne serait-ce que d'un champ a changé ?

    Merci pour votre aide

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Il existe différentes techniques pour détecter des modifications dans une table mais ça dépend de ce que tu veux faire... Peux-tu nous en dire plus ?
    Pensez au bouton

  3. #3
    Membre régulier Avatar de rgomes
    Homme Profil pro
    IT Developer JAVA Senior
    Inscrit en
    Juin 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : IT Developer JAVA Senior
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 128
    Points : 76
    Points
    76
    Par défaut
    Merci pour ta réponse rapide.
    Exemple :

    instant t0
    ===========
    ID | NAME | AGE
    1 toto 15
    2 titi 17

    instant t1
    ===========
    ID | NAME | AGE
    1 toto 15
    2 titi 18

    Je souhaite savoir que le resultset est différent entre t0 et t1 (age=18 en t1).


    PS : j'utilise mysql-4.1.12 (et ne peux utiliser la 5.0)

  4. #4
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Tu peux gérer ça de manière applicative en stockant le premier resultset et en le comparant avec le deuxième (d'autant plus facile dans un langage orienté objet).
    Deuxième méthode : ajouter une colonne de type TIMESTAMP qui indique la date de dernière modification d'une ligne.
    Pensez au bouton

  5. #5
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Si c'est pour comparer une table "back up" avec la table actuelle, tu peux le faire avec des jointures:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT Avant.*, Apres.*
    FROM tatableBackup Avant
    LEFT OUTER JOIN tatable Apres
    ON (Avant.id=Apres.id AND (Avant.champ1 != Apres.champ1 OR ...)
     
    UNION ALL
     
    SELECT Avant.*, Apres.*
    FROM tatableBackup Apres
    LEFT OUTER JOIN tatableBackup Avant ON (Avant.id=Apres.id)
    WHERE Avant.id IS NULL
    La première requête ressort les enregistrement qui ont été modifiés/supprimés. La deuxième requête ressort les enregistrements qui ont été ajoutés.

    En principe, ces deux ensembles sont disctincts, donc on fait un UNION ALL pour des raisons de performance (pas de suppression de doublons). Sinon, il faut faire un UNION DISTINCT (l'union par défaut)

    On est obligé de procéder ainsi car on ne dispose pas de la jointure FULL OUTER JOIN sous MySQL.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

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

Discussions similaires

  1. comparer valeurs ResultSet
    Par mmb04 dans le forum JDBC
    Réponses: 14
    Dernier message: 13/04/2007, 14h37
  2. [date] Comparer deux formats différents
    Par terziann dans le forum Requêtes
    Réponses: 17
    Dernier message: 21/07/2003, 15h21
  3. [LG][FAQ]comparer des fichiers
    Par lucke dans le forum Langage
    Réponses: 11
    Dernier message: 01/06/2003, 18h02
  4. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37

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