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

Développement SQL Server Discussion :

Requête SQL entre deux bases de données distinctes [2008]


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2012
    Messages : 11
    Points : 10
    Points
    10
    Par défaut Requête SQL entre deux bases de données distinctes
    Bonjour,

    Je suis assez novice en SQL et je voudrais créer une requête assez complexe (pour moi, pas pour les pros).

    J'ai deux bases de données (BASE1 et BASE2) sur le même serveur/instance sous SQL Server 2008.

    BASE1 contient une table dbo.RESULTAT, et BASE2 contient une table dbo.SOURCE comme ceci:

    BASE1.dbo.RESULTAT
    T_NOM; T_DEBIT; T_CREDIT
    ALEX 152.00 28.00
    FRED 802.50 103.50
    MARC 658.30 142.00
    DAN 1204.55 88.50

    BASE2.dbo.SOURCE
    T_NOM; T_SOLDE
    ALEX 0.00
    FRED 0.00
    MARC 0.00
    DAN 0.00

    Le but étant de mettre en place une requête qui va aller calculer T_DEBIT-T_CREDIT et écrire le résultat sur T_SOLDE, le tout en fonction de T_NOM. Pour cet exemple, voici le résultat voulu:

    BASE2.dbo.SOURCE
    T_NOM; T_SOLDE
    ALEX 124.00
    FRED 699.00
    MARC 516.30
    DAN 1116.05

    Au départ, j'ai pensé à faire un UPDATE, comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT T_NOM, T_DEBIT-T_CREDIT AS CALCUL FROM BASE1.dbo.RESULTAT
     
    UPDATE BASE2.dbo.SOURCE
     
    SET T_SOLDE=CALCUL
     
    WHERE BASE2.dbo.SOURCE.T_NOM=BASE1.dbo.RESULTAT.T_NOM
    Et je m'en doutais vraiment que ça n'aller pas marcher.

    Merci de m'aider à la réalisation de ce script!

    Salut

  2. #2
    Modérateur
    Avatar de Kreepz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 681
    Points : 1 458
    Points
    1 458
    Billets dans le blog
    1
    Par défaut
    Tu devrais te renseigner sur le transact-SQL.
    Comme ça, tu pourrais effectuer une boucle pour faire un update à chaque ligne de ta base1 dans ta base 2.

    Tutoriel de transact sql

  3. #3
    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
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Citation Envoyé par Sobhi9009 Voir le message
    Et je m'en doutais vraiment que ça n'aller pas marcher.
    L'idée est la bonne. Il ne reste plus qu'à mettre tout ça en une seule requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UPDATE Src
        SET T_SOLDE=T_DEBIT-T_CREDIT
    FROM BASE2.dbo.SOURCE AS scr
    INNER JOIN BASE1.dbo.RESULTAT AS Res
         ON Src.T_NOM=Res.T_NOM

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2012
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Tout d'abord merci beaucoup pour votre aide.

    Concernant votre requête, l’exécution me renvoie un message d'erreur: "" L'identificateur en plusieurs parties "src.T_NOM" ne peut pas être lié. ""

    Entre-temps, je suis en train de lire une doc sur Transact SQL.

    Really appreciate it !

  5. #5
    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
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par Sobhi9009 Voir le message
    Concernant votre requête, l’exécution me renvoie un message d'erreur:
    En effet, j'ai fait une faute de frappe en écrivant la requête : j'ai alliassé la table SCR, au lieu de SRC...

    Il faut donc écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    UPDATE Src
        SET T_SOLDE=T_DEBIT-T_CREDIT
    FROM BASE2.dbo.SOURCE AS Src
    INNER JOIN BASE1.dbo.RESULTAT AS Res
         ON Src.T_NOM=Res.T_NOM

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2012
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Le script fonctionne nickel.

    Grand merci à aieeeuuuuu

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

Discussions similaires

  1. [MySQL] requête entre deux Bases de données
    Par kokoroko dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/06/2007, 15h14
  2. Requête UPDATE entre deux Bases de données
    Par dahu17 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/05/2007, 12h16
  3. Faire un lien entre deux bases de données
    Par pierce dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/01/2006, 21h29
  4. Réponses: 5
    Dernier message: 30/11/2005, 16h41

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