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 et SQL. Discussion :

[requete] Comparer 2 tables entre elles et extraire les différences


Sujet :

Requêtes et SQL.

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 216
    Points : 61
    Points
    61
    Par défaut [requete] Comparer 2 tables entre elles et extraire les différences
    Bonjour,

    J'ai 2 tables A et B, construites exactement de la même manière, avec les mêmes champs, qui contiennent les mêmes données et le même nombre de ligne.

    La table A est fixe mais la table B peut etre modifiée au niveau de certains champs.

    Le but est de pouvoir extraire les différences entre la table A et B et pouvoir modifier dans la table A, les memes champs qui ont été modifiés dans la table B

    Je suis bloquée sur ce probleme depuis 2h... je n'y arrive pas
    Merci pour votre aide

  2. #2
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Si tu fais
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select *
    from B
    except
    select *
    from A
    Tu auras les tuples qui sont dans B et pas dans A et après tu peux procéder en faisant des sur les tuples concernés. Mais si tes tables sont immenses (une centaine de champs) c'est pas faisable. Je ne sais pas s'il existe des fonctions qui renvoient les différences entre deux tables.

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 216
    Points : 61
    Points
    61
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM ENCOURS  MOTEURS CLIENTS + TYPE 2
    except
    SELECT *
    FROM BL case à cocher

    voila ce que j'ai écris mais ca ne marche pas. Message d erreur : erreur de synthase dans la clause FROM

  4. #4
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    une solution si tu veux que ta table A soit identique a ta table tu suprime tous les enregistrements de la table A et avec une requete ajout tu remet tout les enregistrements de la table B a la place

  5. #5
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    voila ce que j'ai écris mais ca ne marche pas. Message d erreur : erreur de synthase dans la clause FROM
    Pas étonnant, c'est quoi tout cas ??? : ENCOURS MOTEURS CLIENTS + TYPE 2
    Si c'est le nom d'une table il faut la mettre entre crochets. Et si c'est le cas, il faut en général éviter les espaces et les caractères spéciaux pour les noms de tables.

    Citation Envoyé par AL1986
    Si tu fais
    Code SQL :

    SELECT *
    FROM B
    except
    SELECT *
    FROM A
    Sympa ! Je ne connaissais même pas le mot-clé "except" ...

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 216
    Points : 61
    Points
    61
    Par défaut
    oui j'y avais pensé mais dans la table fixe A, il y a un champ en plus de la table B.
    Ce champ en plus est une case à cocher et je ne veux pas supprimer ces cases cochées.

    je veux juste pouvoir compléter des cases vides de la table A qui auraient été complété dans la table B....

  7. #7
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Quelles sont tes deux tables ?
    ENCOURS ?
    MOTEURS ?
    CLIENTS ?
    BL ?
    case à cocher ?
    Que signifie le + TYPE 2 ?

  8. #8
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 216
    Points : 61
    Points
    61
    Par défaut
    Pour répondre à Demco, ce sont effectivement des noms de tables.
    J'ai les ai mis entre crochets et tjs le meme message d erreur...

  9. #9
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    Quand tu complete ta table B pourquoi ne pas completer ta table A en même temp

  10. #10
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par Demco Voir le message
    Sympa ! Je ne connaissais même pas le mot-clé "except" ...
    EXCEPT ne fait pas partie de la norme SQL et n'est donc pas implémenté dans tous les SGBD.
    On peut tout aussi bien faire un not exists ou un not in.
    Citation Envoyé par atlantideD Voir le message
    Pour répondre à Demco, ce sont effectivement des noms de tables.
    J'ai les ai mis entre crochets et tjs le meme message d erreur...
    Si je comprends bien ta table B s'appelle "ENCOURS MOTEURS CLIENTS + TYPE 2" et ta table A s'appelle "BL case à cocher"

  11. #11
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 216
    Points : 61
    Points
    61
    Par défaut
    TABLE A : BL case à cocher
    TABLE B : ENCOURS MOTEURS CLIENTS + TYPE 2

    J'appelle x, y, z, 3 champs communs aux 2 tables
    Sachant que x est un n° de moteur et y et z sont des données concernant ce moteur et qu'on retrouvera toujours les memes numéros de moteurs dans les 2 tables


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      x     y     z                                   x     y      z
     
    TABLE B:   1      l      p                    TABLE A:  1             p
                   2      a     m                                  2     a
                   3      o                                         3      o     
                   4      v      b                                 4
    Ici, on voit bien que la table B a été modifié par rapport à la table A
    Je cherche à récupérer des champs de la table B pour compléter la table A
    Ce qui revient à dire que je cherche à récupérer
    - pour le moteur 1, le champ l
    - 2, m
    - 3, aucun cham
    - 4, les 2 champs

    Pour ensuite insérer ces champs manquants à la bonne place dans la table A

    Merci

  12. #12
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 216
    Points : 61
    Points
    61
    Par défaut
    excusez moi, la mise en page n'a pas été conservée

  13. #13
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 216
    Points : 61
    Points
    61
    Par défaut
    vous trouverez en fichier joint le petit tableau les explications, dans une bonne forme

    MERCI
    Fichiers attachés Fichiers attachés

  14. #14
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select b.x
    from [BL case à cocher] a, [ENCOURS MOTEURS CLIENTS + TYPE 2] b
    where a.y<>b.y or a.z<>b.z;
    te renverra, les x des tuples à mettre à jour dans BL case à cocher(si on suppose que x ne change pas).
    Sinon, un petit conseil : change le nom de tes tables (vire les espaces, les accents et les chiffres)

  15. #15
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 216
    Points : 61
    Points
    61
    Par défaut
    A quoi correspond les a et b dans la formule ???

  16. #16
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Citation Envoyé par atlantideD Voir le message
    A quoi correspond les a et b dans la formule ???
    Un minimum de recherche s'impose... il s'agit là des bases du SQL, merci de lire au moins un tutoriel SQL.

  17. #17
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 216
    Points : 61
    Points
    61
    Par défaut
    excusez moi, j'ai très peu de connaissances en sql...
    j'essayerai de trouver à quoi cela correspond.
    merci qd meme

  18. #18
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par atlantideD Voir le message
    A quoi correspond les a et b dans la formule ???
    a est un alias de BL case à cocher et b un alias de ENCOURS MOTEURS CLIENTS + TYPE 2

  19. #19
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 216
    Points : 61
    Points
    61
    Par défaut
    oui mais alors pourquoi tu nommes parfois les tables avec a et b et d autres fois avec leurs vrais noms??

  20. #20
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 216
    Points : 61
    Points
    61
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [ENCOURS MOTEURS CLIENTS + TYPE 2].[MSN U/S à réparer parent];
    FROM [BL case à cocher] , [ENCOURS MOTEURS CLIENTS + TYPE 2]
    WHERE [BL case à cocher].[Statut moteur]<>[ENCOURS MOTEURS CLIENTS + TYPE 2].[Statut moteur] OR [BL case à cocher].[Tag serviceable]<>[ENCOURS MOTEURS CLIENTS + TYPE 2].[Tag serviceable]
    J'ai commencé à écrire, mais j'ai encore un message d erreur à cause de FROM

Discussions similaires

  1. [Lazarus] MD5 : comment comparer des valeurs entre elles ?
    Par MedGIR dans le forum Lazarus
    Réponses: 1
    Dernier message: 26/08/2009, 21h30
  2. Réponses: 3
    Dernier message: 14/06/2009, 00h14
  3. [MySQL] Relier des tables entre elles
    Par Shinoda00 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/03/2009, 14h23
  4. comparer des dates entre elles
    Par cyrano_de_bergerac dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 07/06/2007, 15h39
  5. [VB6]Lier 3 tables entre elles
    Par boudincweole10 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/05/2006, 15h07

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