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 :

Comparaison entre 2 champs de 2 tables diff.


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Comparaison entre 2 champs de 2 tables diff.
    Bonjour

    Je vous drais réaliser une comparaison d'1 champ A d'1 table 1 avec un autre champ 'B' d'une table 2

    le but est de trouver les valeurs du champ A (de la table 1) qui ne serraient pas = aux valeurs du champ B (de la table 2).

    Exemple:

    Table1
    ChampA
    a1a2a
    3a4a
    5a6a

    Table2
    ChampB
    a1a2a
    5a6a

    Le résultat doit être '3a4a' (= valuers du champA(Table1) qui ne se trouvent pas dans le champB (Table2))

    Merci

    @+

  2. #2
    Membre actif Avatar de yroubag
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 224
    Points
    224
    Par défaut
    Regarde les tutoriels avant de poster.
    http://sqlpro.developpez.com/cours/s...quetes/#L1.5.1
    Yroubag
    Bien poser les questions, c’est tout un art.
    Où tout dépend, bien sûr, de la réponse que l’on veut obtenir. -André Frossard

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Bonjour.
    Tu dois écrire un truc dans ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * 
    FROM A JOIN B 
           ON A.Champ1=B.Champ2
    Mais habitue toi à consulter des tutoriels

  4. #4
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Et toi, habitue toi à mettre des balises CODE et à indenter !

    (je sais, c'est un peu facile, mais je pouvais pas me retenir....)

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 86
    Points : 83
    Points
    83
    Par défaut comparaison 2 champs
    Proc sql;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    create table Table3 as 
    select *
    from table1 
    where ChampA in (
                    select ChampB 
                    from Table2
                    )
    ;quit;

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Essayer de lire les demandes avant de répondre parce que vous répondez le contraire de ce qui est attendu.

  7. #7
    Membre actif Avatar de yroubag
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 224
    Points
    224
    Par défaut
    Si tu n'as pas trouvé dans le tutoriel que je t'ai envoyé .... et puisque les autres ne semblent pas avoir compris ce que tu voulais...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM TABLE1 T1 WHERE NOT EXISTS 
    (SELECT * FROM TABLE2 T2 WHERE T2.ChampB = T1.ChampA)
    Yroubag
    Bien poser les questions, c’est tout un art.
    Où tout dépend, bien sûr, de la réponse que l’on veut obtenir. -André Frossard

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par yroubag Voir le message
    Si tu n'as pas trouvé dans le tutoriel que je t'ai envoyé .... et puisque les autres ne semblent pas avoir compris ce que tu voulais...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM TABLE1 T1 WHERE NOT EXISTS 
    (SELECT * FROM TABLE2 T2 WHERE T2.ChampB = T1.ChampA)
    Bonsoir,

    Pour informations, serait-il possible d'utiliser la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT
      *
    FROM
      Table1
    WHERE
      ChampA NOT IN
        ( SELECT
            ChampB
          FROM
            Table2 );

  9. #9
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    oui c'est une solution
    une autre serait de faire une jointure externe

  10. #10
    Membre actif Avatar de yroubag
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 224
    Points
    224
    Par défaut
    Citation Envoyé par Christophe_ Voir le message
    Bonsoir,

    Pour informations, serait-il possible d'utiliser la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT
      *
    FROM
      Table1
    WHERE
      ChampA NOT IN
        ( SELECT
            ChampB
          FROM
            Table2 );
    Effectivement, cette requête fonctionne. Mais il est préférable d'utiliser le EXISTS(), car le IN() est moins optimisé en performance et doit être utilisé idéalement pour un nombre réduit de possibilité. Il sert plutôt éviter une série de comparaisons avec des OR.
    Ex: A IN(1,2,3) plutôt que A=1 or A=2 or A=3
    Yroubag
    Bien poser les questions, c’est tout un art.
    Où tout dépend, bien sûr, de la réponse que l’on veut obtenir. -André Frossard

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Points : 87
    Points
    87
    Par défaut
    Merci pour cette précision !

  12. #12
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 544
    Points
    52 544
    Billets dans le blog
    5
    Par défaut
    Beaucoup plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ChampA
    FROM   Table1
    EXCEPT
    SELECT ChampB
    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/ * * * * *

Discussions similaires

  1. calcul entre deux champs dans une table
    Par pomar dans le forum Access
    Réponses: 7
    Dernier message: 29/11/2006, 18h27
  2. Comparaison entre deux dates dans une table
    Par Biskot75 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2006, 11h16
  3. Réponses: 15
    Dernier message: 17/06/2006, 11h49
  4. Comparaison entre deux champs de deux tables différentes
    Par liam81150 dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/09/2005, 20h53
  5. Requete de comparaison entre 2 champs
    Par wallaz dans le forum Access
    Réponses: 2
    Dernier message: 23/09/2005, 19h17

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