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 enregistrement de deux tables identiques


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 61
    Points : 34
    Points
    34
    Par défaut Comparaison enregistrement de deux tables identiques
    Bonjour,

    J'ai deux tables ayant exactement la même structure et se trouvant dans la même base.

    Table1 ( id_pere, id_mere, id_enfant, champsX, champs Y)
    Table2 ( id_pere, id_mere, id_enfant, champsX, champs Y)
    (clé primaire composée de 3 champs)

    J'aimerais trouver les lignes d'enregistrements présents dans Table2 et qui ne sont pas présents dans Table1. En clair je veux les nouveaux enregistrement. Pour moi nouveau enregistrement cela signifie qu'une clé primaire de Table2 ne doit pas être dans Table1

    Comment m'y prendre?

    Merci.

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Merci de regarder les tutos avant de poster
    Jointure externe

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Bonsoir et merci mais j'ai déjà lu ce tuto. Je ne sais pas comment appliquer cela à mon cas. Si on peut m'aiguiller ce serait vraiment bien.

    Merci.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Comment retrouver les triplets qui constituent la clé primaire, présents dans la table 2 et non dans la table 1 ?

  5. #5
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par geek21 Voir le message
    Bonsoir et merci mais j'ai déjà lu ce tuto. Je ne sais pas comment appliquer cela à mon cas.
    Tu n'y mets pas beaucoup de bonne volonté
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT t1.id_pere, t1.id_mere, t1.id_enfant, t1.champsX, t1.champs Y
    FROM Table1 t1
    LEFT JOIN Table2 t2 
    on t1.id_pere=t2.id_pere 
    and t1.id_mere=t2.id_mere 
    and t1.id_enfant=t2.id_enfant
    WHERE t1.id_pere IS NULL

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    Merci de l'aide.

    Mais la requête me renvoie 0 enregistrement. Ce qui n'est pas normal car d'après mon jeu d'essai elle doit me renvoyer 45.

    Je me demande ce qui cloche.

    Je réexplique

    Table1 Table2
    id_pere, id_mere, id_enfant id_pere, id_mere, id_enfant
    1,2,3 1,2,3
    5,8,4 5,8,4
    fin 9,8,1
    fin

    La requete doit me sortir le triplet (9,8,1) qui est dans tbale2 mais pas dans table1.

  7. #7
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT t2.id_pere, t2.id_mere, t2.id_enfant, t2.champsX, t2.champsY
    FROM Table2 t2
    LEFT JOIN Table1 t1 
    ON t1.id_pere=t2.id_pere 
    AND t1.id_mere=t2.id_mere 
    AND t1.id_enfant=t2.id_enfant
    WHERE t1.id_pere IS NULL

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    C'est exactement cela. Merci

    Cependant je viens de faire le test grandeur nature sur deux tables de structures identiques mais avec 2 millions d'enregistrements, et la ca fait 20mn et la requête n'a toujours pas fini.

    Y a-t-il quelque chose à faire?

    Merci encore c'est sympa.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 61
    Points : 34
    Points
    34
    Par défaut
    comment puis-je optimiser ? la requete de jointure sur les deux tables de deux millions d'enregistrements chacunes met un temps fou à s'éxécuter ( j'ai laissé tourner 30mn et toujours pas de réponse...). Y a-t-il une autre méthode?

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/06/2013, 19h10
  2. Comparaison de deux tables identiques
    Par Crillick dans le forum Requêtes
    Réponses: 12
    Dernier message: 26/03/2012, 13h30
  3. Réponses: 3
    Dernier message: 22/03/2012, 15h16
  4. Réponses: 3
    Dernier message: 26/10/2006, 15h04
  5. [Conception] Déplacer un enregistrement vers une table identique
    Par Romalafrite dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/09/2006, 10h55

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