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

MS SQL Server Discussion :

Comment comparer 2 tables et trouver les lignes différentes


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Comment comparer 2 tables et trouver les lignes différentes
    Bonjour,

    J'ai 2 tables différentes avec n champs.
    Chacune des tables a 1 champ avec une valeur unique, un identifiant sans doublon (comme pour une clé primaire d'une table mais dans ce cas ce n'est pas la clé primaire des tables en question).

    Basé sur la comparaison de ces 2 champs je dois distinguer 3 choses:

    1- toutes les lignes uniques à la table 1
    2- toutes les lignes uniques à la table 2.
    3- toutes les correspondante (tab1.ch1=tab2.ch1) et qui ont une valeur différente sur 3 autres paires de champs.

    pour écrire les lignes sélectionnées dans une 3e table.
    Je vais traiter cette problématique en 3 requêtes distinctes.


    Bon pour 1- et 2-,
    on s'entend que c'est la même problématique! J'ai bien essayé quelque chose comme:

    INSERT tab3 (ch_Id, ch_a, ch_b, ch_c)
    SELECT tab1.ch_Id1, tab1.ch_A1, tab1.ch_B1, tab1.ch_C1
    FROM tab1, tab2
    WHERE tab1.ch_Id1 <> tab2.ch_Id2

    .....mais c'est pas ça!

    Quelqu'un peut-il éclairer l'obscurité dans laquelle je suis? (i.e. exemple explicite!)

    Pour 3-,
    Je je propose:
    INSERT tab3 (ch_Id, ch_a, ch_b, ch_c)
    SELECT tab1.ch_Id1, tab1.ch_A1, tab1.ch_B1, tab1.ch_C1
    FROM tab1, tab2
    WHERE tab1.ch_Id1 = tab2.ch_Id2
    and
    ( tab1.ch_A1 <> tab2.ch_A2
    or tab1.ch_B1 <> tab2.ch_B2
    or tab1.ch_C1 <> tab2.ch_C2 )

    Est-ce la bonne façon?


    P.S. ver : SQL2K

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 839
    Points : 52 932
    Points
    52 932
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ...
    FROM Table1
    EXCEPT
    SELECT ...
    FROM Table2
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Ce n'est pas suffisent pour y voir claire
    Merci bien , candidement je n'ai pas autant de connaissance SQL que toi pour bien saisir ton commentaire. J'ai essaiyé la syntaxe proposée sans succès.

    Dans l'aide en ligne de SQL-Server 2K, j'ai lu que :
    "Except
    Recherche la différence entre deux jeux, en conservant éventuellement les doublons.

    Syntaxe
    Except("Set1", "Set2"[, ALL]) "

    Cependant il n'y a pas d'exemple avec des tables.

    Aurais-tu un commentaire plus explicite, Merci .
    (serai de retour mardi!)

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 839
    Points : 52 932
    Points
    52 932
    Billets dans le blog
    5
    Par défaut
    SQL 2000 ne le supporte pas, mais c'est remplaçable par :
    http://sqlpro.developpez.com/cours/s...embles/#L3.5.3

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Merci :D :resolu
    Comme on dit par chez-nous : "Ça fait la job "

    Deplus je doit dire que les références que tu as pointés sont simples et surtout pédagogiquement efficace Merci!

  6. #6
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Merci
    Comme on dit par chez-nous : "Ça fait la job "

    Deplus je doit dire que les références que tu as pointés sont simples et surtout pédagogiquement efficace Merci!

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 04/04/2010, 00h14
  2. Réponses: 1
    Dernier message: 03/12/2009, 11h52
  3. Réponses: 5
    Dernier message: 06/11/2007, 13h58
  4. Réponses: 3
    Dernier message: 22/07/2006, 12h26
  5. sélectionner les lignes différentes entre 2 tables
    Par PAYASS59 dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/09/2005, 14h05

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