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

SQL Procédural MySQL Discussion :

Différence entre deux tables


Sujet :

SQL Procédural MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 12
    Points
    12
    Par défaut Différence entre deux tables
    Bonjour ,

    Je suis assez novice en Mysql, et mon problème est le suivant :
    J'ai deux tables de même format (A et B) , J'aimerais trouvé l'ensemble des lignes présentes dans la première table mais pas dans la seconde , le critère d'égalité d'une ligne ne se fait pas sur une clef mais sur trois valeurs.

    J'ai tenté de réaliser cela ave un left join mais sans succès

    Existe t'il une fonction spécifique ?

    merci

  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
    Bonjour,

    Montre-nous déjà ce que tu as essayé (et la structure des tables) qu'on voie ce qu'on peut faire
    Pensez au bouton

  3. #3
    Membre confirmé Avatar de amika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2004
    Messages : 498
    Points : 464
    Points
    464
    Par défaut
    supposons que la clé est ID dans les deux tables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (A-B) = select * from A where ID is not in (select ID from B)

    _____________________
    Il n'y a pas de choses urgentes, il n'y a que des choses en retard

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 12
    Points
    12
    Par défaut
    La table A à la structure suivante :
    HIST_BASID
    HIST_SLOTID
    HIST_PORTID
    HIST_VPID
    HIST_VCI
    HIST_CIRCUITID
    HIST_LEX

    La table B à la structure Suivante :
    HIST_BASID
    HIST_SLOTID
    HIST_PORTID
    HIST_VPID
    HIST_VCI

    Deux lignes de ces tables sont égales si les valeurs(HIST_SLOTID,HIST_PORTID,HIST_VPID,HIST_VCI) sont égales

    J'aimerais trouver les lignes présentes dans A et non présentes dans B

  5. #5
    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
    Essaye ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT A.* FROM A LEFT JOIN B
       ON A.HIST_SLOTID=B.HIST_SLOTID
          AND A.HIST_PORTID=B.HIST_PORTID
          AND HIST_VPID=B.HIST_VPID
          AND HIST_VCI=B.HIST_VCI
       WHERE B.HIST_SLOTID IS NULL
    Pensez au bouton

  6. #6
    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
    Et tu as essayé quoi? Ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *
     
    FROM A
    LEFT OUTER JOIN B
    USING (HIST_SLOTID,HIST_PORTID,HIST_VPID,HIST_VCI)
     
    WHERE B.HIST_SLOTID IS NULL
    ou équivalent?
    "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...

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    SELECT cpt_compta.npiece FROM cpt_compta LEFT JOIN cpt_ana ON cpt_compta.npiece=cpt_ana.npiece WHERE cpt_ana.npiece IS NULL

    J'affiche les fiches de cpt_compta non présentes dans cpt_ana.
    Est ce cela que tu veux ?
    André

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 12
    Points
    12
    Par défaut
    J'ai essayé la proposition de maximilian et de pcaboche le résultat est identique , je plante ma machine !!


    Pour répondre à aclami , c'est effectivement cela la seule différence est que je n'ai pas une clef unique , mais un clef composée de quatre valeurs.

    Et je pense que c'est cela qui coince.

    Je penses donc créer un id unique dans chacune des tables qui sera une concaténation de ces 4 Valeurs, je pourrais donc faire un left join sur cette clef.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 12
    Points
    12
    Par défaut
    Maximilian,
    J'ai essayé ta proposition sur deux tables allégées.

    Et cela fonctionne très bien .

    Merci pour votre aide à tous

  10. #10
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Merci aussi Maximilian, même problème, même solution pour moi.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

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

Discussions similaires

  1. Récuperer différence entre deux tables avec JOIN
    Par Takumi dans le forum Requêtes
    Réponses: 6
    Dernier message: 17/08/2009, 22h59
  2. MINUS et Différence entre deux tables
    Par thegreatbato dans le forum SQL
    Réponses: 19
    Dernier message: 27/03/2008, 17h16
  3. Afficher la différence entre deux tables
    Par MartinezGarcia dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/02/2008, 20h25
  4. Différence entre deux tables
    Par szoubir dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 24/07/2007, 18h41
  5. faire une différence entre deux tables
    Par geay dans le forum Langage SQL
    Réponses: 1
    Dernier message: 04/09/2006, 15h33

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