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

Langage SQL Discussion :

Différence entre deux tables


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 168
    Par défaut Différence entre deux tables
    Bonjour à tous

    J'ai deux tables :
    1. Tab1 (id, name) qui comporte 167 enregistrements et
    2. Tab2 (id, name) identique à Tab1 mais qui comporte 169 enregistrements


    Les name dans la table Tab2 sont au nombre de 167 et ressemblent à ceux de Tab1.

    Comment je peux faire sortir les deux name supplémentaires dans Tab2 ?
    J'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select name from Tab2
    MINUS
    select name from Tab1
    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 578
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 578
    Par défaut
    Bonjour,
    Tu n'étais pas loin:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT name FROM Tab2
    except
    SELECT name FROM Tab1

    Tatayo.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 168
    Par défaut
    Je te remercie

    J'ai ajouté des conditions mais cela n'a pas marché

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select name from Tab1 where name like '%Manager%'
    except
    select name from Tab2 where name like '%Level2%'
    sachant que la condition where porte sur le name

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 578
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 578
    Par défaut
    Tu n'as pas la même condition dans les deux requêtes, est-ce normal ?
    D'après ta requête tu veux tous les nom de TAB1 contenant "Manager" SAUF ceux qui sont aussi dans TAB2 et qui contiennent "Level2"...
    Est-ce que tu peux nous donner un petit jeu de test avec le résultat attendu ?

    Tatayo.

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 168
    Par défaut
    Par exemple

    Tab1

    id Name
    14 AAAManager
    15 BBBManager
    16 CCCManager


    Tab 2

    id Name

    58 AAAManager
    96 BBBManager


    Je voudrais écrire une requête qui me permet d'afficher l'enregistrement (16, CCCManager) de Tab1

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 578
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 578
    Par défaut
    C'est bien ce que je disais, la clause where dans la deuxième requête n'était pas bonne...
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT name FROM Tab1 WHERE name LIKE '%Manager%'
    except
    SELECT name FROM Tab2 WHERE name LIKE '%Manager%'
    Maintenant si tu veux aussi l'ID, il faut faire autrement:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select id,name
    from tab1
    left outer join tab2 on tab1.name = tab2.name
    where tab2.id is null and tab1.name like '%Manager%'
    Tu peux aussi utiliser NOT IN, NOT EXISTS... j'avoue que je ne sais pas lequel est le plus performant.

    tatayo.

Discussions similaires

  1. Différence entre deux tables
    Par fabricedallara dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 24/05/2012, 14h31
  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