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 :

Insert then update Sql server


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2012
    Messages : 25
    Par défaut Insert then update Sql server
    Bonjour,

    J'ai un souci et j'ai besoin de votre aide au plus vite .
    Comme le titre l'indique je souhaite faire une insert then update dans ma base. Je m'explique : j'ai 2 tables : table source Etudiant de laquelle j’insère mes données dans une autre table destination pour initialiser la table 'Etudiant_info'
    Etudiant_info : Id_Etud, Nom , Prenom , DateDebutEtud , DateFinEtud
    Par la suite avec une autre table Chagement_Etud : Id_Etud, Nom , Age , DateDebut_new, DateFin_new
    je souhaite insérer et mettre à jour la table Etudiant_Info' de la manière suivante:
    Si (ID_Etud , Nom) existe donc je ne fais rien
    Si (ID_Etud , Nom) n'existe pas donc j'insère
    Et Si (ID_Etud,?) existe (avec un autre nom) j'insère et je mets à jours la dateFinEtud sera = DateDebut_new-1.
    Exemple

    Etudiant_Info :
    Id_Etud, Nom , Prenom , DateDebutEtud , DateFinEtud 
    01 , Abc , Azerty , 01/01/2000 , 31/12/9999
    chagement_Etud :
    Id_Etud, Nom , Age , DateDebut_new, DateFin_new
    01 , Abc , Azerty , 01/01/2005 , 31/12/2014 // là je ne dois rien faire au niveu de la table Etudiant_info
    01 , aaaa, toto , 01/01/2012 , 31/12/2014 // là je mets à jour la date de fin 
    02 , cdf , abcdef , 01/01/2005 , 31/12/2014 // là je insérer la ligne dans Etudiant_info
    
    Donc la table Etudiant_info sera comme suit

    Etudiant_Info :
    Id_Etud, Nom , Prenom , DateDebutEtud , DateFinEtud 
    01 , Abc , Azerty , 01/01/2000 , 31/12/2011 (01/01/2012-1jours) 31/12/9999
    02 , cdf , abcdef , 01/01/2005 , 31/12/2014
    Donc en gros pour l'insertion ma clé c'est (Id_Etud et Nom) et pour l'update ma clé c'est seulement (ID_Etud)


    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Vous pouvez faire ceci avec une commande MERGE

    Edit :
    Vos règles semblent assez confuses : que devez vous faire si vous avez en plus cette ligne dans la table chagement_Etud :
    01 , bbbbb, toto , 01/01/2012 , 31/12/2015
    

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2012
    Messages : 25
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour,

    Vous pouvez faire ceci avec une commande MERGE

    Edit :
    Vos règles semblent assez confuses : que devez vous faire si vous avez en plus cette ligne dans la table chagement_Etud :
    01 , bbbbb, toto , 01/01/2012 , 31/12/2015
    
    Avec cette ligne : je l'insère et je mets à jours la ligne "01 , Abc , Azerty , 01/01/2000 , 31/12/2011 (01/01/2012-1jours) donc la ligne ne vas pas changer.
    Le but c'est d'avoir par rapport à un ID les dates de fin qui changent par rapport à l'enregistrement de date début suivante .

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    je pensais que vous vous appuyiez sur la date de fin mais apparemment c'est sur la date de début !?

    Donc, ma question de façon plus générale : si vous avez plusieurs fois le même id, mais avec des données toutes différentes, comment faites-vous ?

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2012
    Messages : 25
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    je pensais que vous vous appuyiez sur la date de fin mais apparemment c'est sur la date de début !?

    Donc, ma question de façon plus générale : si vous avez plusieurs fois le même id, mais avec des données toutes différentes, comment faites-vous ?
    J’insère la ligne avec le nouveau ID et les données différentes. Puis je modifie la date de Fin de précédant Id (dernier existant avant le nouveau) en se basant sur la date début de nouveau ID insérer.
    J'espère que j'étais assez claire

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Par défaut
    Et un bête trigger on Insert, Update ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/03/2010, 10h48
  2. requête update (SQL SERVER 2005)
    Par bonomsoleil dans le forum VB.NET
    Réponses: 6
    Dernier message: 11/08/2008, 17h52
  3. Problème requète update, sql server 2000
    Par Guena5635 dans le forum Développement
    Réponses: 3
    Dernier message: 28/04/2008, 10h32
  4. Insertion simple en SQL Server impossible
    Par Cygace dans le forum ASP.NET
    Réponses: 1
    Dernier message: 10/01/2008, 18h48
  5. Insertion dans table SQL server (Trigger) Aidz moi SVP????
    Par pop bob dans le forum Développement
    Réponses: 2
    Dernier message: 30/07/2005, 23h55

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