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 :

opération EXCLUSION d'une table


Sujet :

Requêtes et SQL.

  1. #1
    Membre confirmé Avatar de danbo52
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 98
    Par défaut opération EXCLUSION d'une table
    Bonjour,

    En lisant la syntaxe SQL pour ACCESS 2010, je ne parviens pas à formuler une requête simple, au lieu de la syntaxe VB, qui me permette d'exclure d'une table les éléments ayant les mêmes indices sur une colonne que ceux d'une autre table.

    En clair:
    TABLE 1:

    codeComposant......Designation

    1.........................pied
    2.........................barreau
    3.........................arceau
    4.........................traverse
    5.........................croisillon
    6.........................assise

    TABLE 2:

    codeComposant......Designation

    1.........................pied
    3.........................arceau

    les codeComposant 1 et 3 sont communs aux 2 tables.
    Ainsi, je souhaite construire une table temporaire ne comprenant pas les éléments ayant ces indices communs et trouver:

    TABLE (D'EXCLUSION') RESULTANTE:

    codeComposant......Designation

    2.........................barreau
    4.........................traverse
    5.........................croisillon
    6.........................assise

    En math ensembliste, il y a le terme EXCLUSION qui est bien pratique, mais en SQL, quel terme conviendrait, car à la lecture des termes de SQL, je ne trouve pas 'la tournure'.
    DISTINCT, OR et HAVING ne semblent pas répondre à ma demande.

    L'idée est de trouver une syntaxe comme ceci (la table d'exclusion existant déjà):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO TableDexclusionResultante (v1,v2,vn...) VALUES(v1,v2,Vn,...) FROM table1 WHERE [pas les indices communs à Table1 et Table2];
    Je ne suis pas un spécialiste de SQL, et l'astuce de concision m'échappe un brin dans ce cas !
    Sans nécessairement donner une solution, quelle piste prendre. Le codage en VB est bien, mais pas suffisamment concis pour moi. Moins il y a de lignes dans mes codes, plus la maintenance est aisée!

    Merci à vous.

  2. #2
    Membre confirmé Avatar de danbo52
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 98
    Par défaut suite
    j'ai un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO TableDexclusionResultante SELECT * FROM Table1 WHERE 'pas les indices de Table2';

  3. #3
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Par défaut
    Salut danbo52,

    regarde le prédicat NOT IN ()


  4. #4
    Membre confirmé Avatar de danbo52
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 98
    Par défaut
    Merci vodiem pour ta réponse.

    avec mon cas concret...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmdSQL = "INSERT INTO tab_articlesCopie SELECT * FROM tab_articles WHERE code NOT IN (SELECT codeArt FROM req_listeArticlesAnomenclatures);"
    Access me répond que la requête est trop complexe.

    Est-ce une limite d'access ou dois-je passer par plusieurs étape : je teste !

  5. #5
    Membre confirmé Avatar de danbo52
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 98
    Par défaut
    Access accepte mieux ceci

    str1 = "SELECT code FROM req_listeArticlesAnomenclatures"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmdSQL = "INSERT INTO tab_articlesCopie SELECT * FROM tab_articles WHERE val(cle) NOT IN ('" & str1 & "');"
    soit une décomposition en deux termes plus courts.
    Malgré cela, il ne me supprime pas les lignes communes.

    ...je cherche Angkhor :

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Par défaut
    effectivement j'ai des réminiscences de pb avec l'INSERT INTO en une seule requête.
    sinon INNER JOIN LEFT avec IS NULL sur le [codeComposant] qui correspond une requête de non correspondance (cf assistant).


Discussions similaires

  1. Liste exclusive dans une table
    Par weebo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/02/2012, 12h14
  2. Réponses: 5
    Dernier message: 27/01/2010, 14h38
  3. Exclusion de champ d'une table d'audit.
    Par HerQuLe dans le forum PL/SQL
    Réponses: 0
    Dernier message: 06/03/2009, 18h07
  4. Faire un select avec une exclusion d'une autre table
    Par polemoss dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/12/2006, 10h10
  5. Opération mathématique sur une table
    Par webrider dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/09/2006, 14h01

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