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 :

Verifier la présence d'un enregistrement


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 60
    Par défaut Verifier la présence d'un enregistrement
    Bonjour,

    Ma table TEMP dans laquelle il y a toutes les informations récupérée de mon fichier source.
    Il y a notamment toutes les entreprises identifiées par un ID (Id_temp), jusqu'a présent afin de créer ma dimension ENTREPRISES dans mon modèle de BDD je faisais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    INSERT INTO ENTREPRISES 
    ( 
    	  Siren 
    	, Raison_Sociale 
    	, Adresse 
    ) 
    SELECT	DISTINCT  		T.Siren 
    				, T.Raison_Sociale 
    				, T.Adresse 
    FROM		TEMP AS T 
    LEFT JOIN	ENTREPRISES AS E 
    		ON T.Siren = E.Siren 
    WHERE		E.Siren IS NULL
    Le problème c'est qu'au début de la création de ma Dimension ENTREPRISE ça ne me posait pas de problème sauf que maintenant je dois faire face à l'arrivé de nouvelles entreprises à partir de nouveaux fichiers plats...
    Donc je voudrais pouvoir vérifier si l'entreprise existe déjà ou non et l'insérer si elle n'y est pas.
    Car avec mon INSERT juste au dessus, dès que je veux faire une modification cela pose problème car ma table ENTREPRISES est rattachée par un FK sur ma table des faits !

    Pourriez vous me donner un coup de main, des pistes ?

    Merci

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    Une piste : l'instruction MERGE si vous êtes en SQL Server 2008

    ++

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 60
    Par défaut
    Merci @mikedavem, c'est parfait

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 60
    Par défaut
    Bon j'ai parlé un peu trop vite... Enfin je suis en train de galéré pour avec le MERGE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    MERGE INTO ENTREPRISES E
    USING (SELECT Id_Temp, Siren, Raison_Sociale, Adresse, Ville, Cp FROM TEMP) T
        ON ( E.Siren = T.Siren AND E.Siren IS NULL) -- Condition de correspondance
    WHEN MATCHED THEN -- Si Vraie
      UPDATE SET E.Siren = T.Siren
    WHEN NOT MATCHED THEN -- Si faux
      INSERT (E.Siren, E.Raison_Sociale, E.Adresse, E.Ville, E.Cp) VALUES (T.Siren, T.Raison_Sociale, T.Adresse, T.Ville, T.Cp)
    J'ai cette erreur qui est retournée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    La liste d'insertion de colonne utilisée dans l'instruction MERGE ne peut pas contenir d'identificateurs en plusieurs parties. Utilisez à la place des identificateurs en une partie.

    J'arrive pas a comprendre, si je veux actualiser que l'adresse d'un entreprise si elle a changé entre deux fichiers plats, ou si je veux rajouter une entreprise si elle n'était pas déjà enregistrée, c'est dans qu'elle partie du MERGE que je dois le definir ?

    EDIT 1 :

    Je rajoute un petit schéma pour mieux comprendre ce que je veux faire en PJ
    Images attachées Images attachées  

  5. #5
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    ya pas un soucis la?

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2011
    Messages : 60
    Par défaut
    Non le soucis vient de l'INSERT car quand j'enlève la partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHEN NOT MATCHED THEN -- Si faux
      INSERT (E.Siren, E.Raison_Sociale, E.Adresse, E.Ville, E.Cp) VALUES (T.Siren, T.Raison_Sociale, T.Adresse, T.Ville, T.Cp)
    La requête s’exécute sans erreur...

Discussions similaires

  1. [XL-2003] verifier si cette boucle d'enregistrement sur une feuille d'excel est bonne
    Par amine2613 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/04/2009, 10h05
  2. Verifier la présence d'un service
    Par Yogy dans le forum Windows Communication Foundation
    Réponses: 1
    Dernier message: 07/05/2008, 15h23
  3. Tester la présence d'un enregistrement dans une table ?
    Par Evocatii dans le forum Requêtes
    Réponses: 5
    Dernier message: 25/02/2008, 21h02
  4. verifier la présence d'un fichier
    Par woody80 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 17/01/2008, 14h37
  5. Test de la présence d'un enregistrement
    Par nellynew dans le forum Access
    Réponses: 1
    Dernier message: 18/05/2006, 15h03

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