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

Access Discussion :

RechercheV en SQL


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2017
    Messages : 16
    Par défaut RechercheV en SQL
    Hello

    Je débute en SQL et j'ai un peu de mal à écrire la requête suivante :

    J'ai 5 tables :

    Table 1 : P600 (ITNO, SITE, ORCO)
    Table 2 : P100 (ITNO, ORCO)
    Table 3 : P300 (ITNO, ORCO)
    Table 4 : P700 (ITNO, ORCO)
    Table 5 : P800 (ITNO, ORCO)

    Je souhaiterais constuire en SQL la table suivante constitué de 4 champs :

    P600.ITNO
    P600.SITE
    P600.ORCO
    ORCO_bis

    ORCO_bis est le résultat d'une rechercheV entre P600.SITE et P100.ITNO, P300.ITNO, P700.ITNO et P800.ITNO.

    ORCO_bis retourne donc une valeur issue :

    ou de P100.ORCO
    ou de P300.ORCO,
    ou de P700.ORCO
    ou de P800.ORCO.

    En gros :

    On prend la valeur de P600.SITE.
    On cherche où est-ce qu'elle se trouve (parmi P100.ITNO, P300.ITNO, P700.ITNO et P800.ITNO)
    On récupère le ORCO associé (P100.ORCO, P300.ORCO, P700.ORCO et P800.ORCO)
    ... qui devient notre ORCO_bis

    J'espère que c'est clair, merci à vous !

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Pour répondre à ta demande, l'équivalent de RechercheV dans Access c'est DFirst("TonChamp"; "TaSourceDeDonnees"; "TonCritere"), (Désolé je ne connais pas le nom français mais Access va le traduire automatiquement).

    Mais là comme toutes tes tables ont la même structure je t'inviterai à n'en faire qu'une seule qui serait :

    TaleP100_P800:
    CodeSource (Texte contenant P100, P300, P700 ou P800)
    ITNO
    ORCO

    Comme cela avec une simple jointure entre tables tu vas pouvoir trouver les éléments en relation.

    Les avantages de cette solution :
    Une seule table au lieu de 4
    Possibilité de trouver facilement tous les éléments en relation avec la table P600.
    Possibilité d'ajouter de nouveaux éléments (ex : P750) SAS avoir à modifier la structure de ta BD (ni probablment sa programmation).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2017
    Messages : 16
    Par défaut
    Heloo,

    Merci pour ta réponse, effectivement ça me semble le pus pertinent de réunir les 4 tables dans une une seule table.

    Mais comment faire pour créer une nouvelle table "Table_ALL", résultats de ces 3 jointures ?

    Merci !

  4. #4
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 114
    Par défaut
    Bonjour,

    Une fois ta table Table_ALL créée avec les champs:
    CodeSource (Texte contenant P100, P300, P700 ou P800)
    ITNO
    ORCO

    Tu peux faire ces requêtes (pas le choix il faut en faire plusieurs):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO Table_ALL (CodeSource, ITNO, ORCO) SELECT 'P100', ITNO, ORCO FROM P100
    INSERT INTO Table_ALL (CodeSource, ITNO, ORCO) SELECT 'P300', ITNO, ORCO FROM P300
    INSERT INTO Table_ALL (CodeSource, ITNO, ORCO) SELECT 'P700', ITNO, ORCO FROM P700
    INSERT INTO Table_ALL (CodeSource, ITNO, ORCO) SELECT 'P800', ITNO, ORCO FROM P800

  5. #5
    Membre averti
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2017
    Messages : 16
    Par défaut
    Ha oui bien vu !

    Par contre, j'aimerais regrouper les 4 requêtes en une seule, mais j'ai un message d'erreur lorsque je rentre ceci :

    Je ne vois pas l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO Table_ALL (CodeSource, ITNO, OEM) 
    VALUES
    (P100.[CodeSource], P100.[ITNO], P100.[ORCO]), 
    (P300.[CodeSource], P300.[ITNO], P300.[ORCO]), 
    (P700.[CodeSource], P700.[ITNO], P700.[ORCO]), 
    (P800.[CodeSource], P800.[ITNO], P800.[ORCO]);

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Il faut faire 4 requêtes séparées. Access n'accepte pas plusieurs instructions SQL dans une même requête.

    Sinon tu peux faire une requête union et t'en servir comme source. Note que les requête union font parti des rares qu'ils faut taper en SQL directement.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select P100.*, "P100" as [Source] from P100
    union all select P300.*, "P300" as [Source] from P300
    union all select P700.*, "P700" as [Source] from P700
    union all select P800.*, "P800" as [Source] from P800

    Le .* signifie Tous les champs de la table.
    le all est nécessaire si tu as enregistrements identiques. Dans un union standard, les doubles sont éliminés.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. L'avenir du BDE et des SQL Links révélé ! <officiel>
    Par Merlin dans le forum Bases de données
    Réponses: 12
    Dernier message: 02/06/2006, 10h18
  2. Pb migration Access / SQL server
    Par yoyo dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 25/04/2005, 10h39
  3. Backup BD SQL Server
    Par Ethmane dans le forum Administration
    Réponses: 3
    Dernier message: 07/06/2002, 00h42
  4. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

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