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 multiple database


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2018
    Messages : 2
    Par défaut Requête multiple database
    Bonjour,

    Je suis à la recherche d'une solution pour simplifier une requête permettant d'extraire des données de plusieurs bases se trouvant sur un même serveur Microsoft SQL 2012.

    Je sélectionne des dossiers suivant un critère de nom ce qui donne environ 35 dossiers.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select dos_nodossier, dos_libelle,nombase='db' + dos_nodossier from dbmaster.dbo.DOSSIER 
    where dos_libelle like'ws%' and dos_nontraite = '-'
    order by dos_nodossier
    Les n° de ces dossiers correspond au nom de la base : 51320 = db51320

    J'ai besoin ensuite d'utiliser ce nom de base pour faire une extraction de donnée sur chaque base issu de la sélection précédente @dbbase représentant le nom de base à traiter.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select ecriture.e_journal,ecriture.e_general,generaux.g_libelle,ecriture.e_auxiliaire,ecriture.e_datecomptable,ecriture.e_refinterne,ecriture.e_libelle,ecriture.e_debit,ecriture.e_credit,ecriture.e_periode,dossier = @dossier,Nom_dossier = @dossierlibelle
    from @dbbase.dbo.ecriture
    inner join @dbbase.dbo.generaux on ecriture.e_general=generaux.g_general
    WHERE ecriture.e_general like '512%' and ECRITURE.E_PERIODE BETWEEN @debper and @finper 
    or ecriture.e_general like '3%' and ECRITURE.E_PERIODE BETWEEN @debper and @finper  
    or ecriture.e_general like '401%' and ECRITURE.E_PERIODE BETWEEN @debper and @finper
    or ecriture.e_general like '411%' and ECRITURE.E_PERIODE BETWEEN @debper and @finper  
    order by ecriture.e_general,ecriture.e_datecomptable

    Ci-dessous la requête actuelle qui renvoi un code d'erreur au niveau de la table du dossier à sélectionner : from @dbbase.dbo.ecriture et @dbbase.dbo.generaux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    declare @dossier char (7), @dossierlibelle varchar (50), @dbbase NVARCHAR(128)
    declare @debper int, @finper int
     
    --set NOCOUNT ON
     
    set @debper = 201710
    set @finper = 201710
     
    -- Sélection automatique des dossiers WS a traiter
     
    declare dossiers_ws cursor for
     
    select dos_nodossier, dos_libelle,nombase='db' + dos_nodossier from dbmaster.dbo.DOSSIER 
    where dos_libelle like'ws%' and dos_nontraite = '-'
    order by dos_nodossier
     
    open dossiers_ws;
    fetch dossiers_ws into @dossier, @dossierlibelle, @dbbase;
     
    -- Traitement 
    WHILE (@@FETCH_STATUS = 0)
     
    BEGIN
     
    select ecriture.e_journal,ecriture.e_general,generaux.g_libelle,ecriture.e_auxiliaire,ecriture.e_datecomptable,ecriture.e_refinterne,ecriture.e_libelle,ecriture.e_debit,ecriture.e_credit,ecriture.e_periode,dossier = @dossier,Nom_dossier = @dossierlibelle
    from @dbbase.dbo.ecriture
    inner join @dbbase.dbo.generaux on ecriture.e_general=generaux.g_general
    WHERE ecriture.e_general like '512%' and ECRITURE.E_PERIODE BETWEEN @debper and @finper 
    or ecriture.e_general like '3%' and ECRITURE.E_PERIODE BETWEEN @debper and @finper  
    or ecriture.e_general like '401%' and ECRITURE.E_PERIODE BETWEEN @debper and @finper
    or ecriture.e_general like '411%' and ECRITURE.E_PERIODE BETWEEN @debper and @finper  
    order by ecriture.e_general,ecriture.e_datecomptable
     
    FETCH dossiers_ws into @dossier, @dossierlibelle, @dbbase;
     
    END;
     
    close dossiers_ws;
    deallocate dossiers_ws;
    GO
    Merci d'avance pour votre aide

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    CGID ???

    Vous devez faire du SQL dynamique.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2018
    Messages : 2
    Par défaut
    Bonjour,

    Merci pour votre retour,

    Oui c'est bien CGID

    Bonne journée,

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2019
    Messages : 7
    Par défaut Besoin d'explication
    Bonjour,

    Je rencontre le même problème que Kipio.
    Je n'arrive pas malheureusement à trouver une solution et mes connaissances en SQL Dynamique sont restreintes.
    Pourriez-vous m'aider ?
    Merci infiniment

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par layo0789 Voir le message
    Je n'arrive pas malheureusement à trouver une solution et mes connaissances en SQL Dynamique sont restreintes.
    Alors c'est le moment d'apprendre et ça n'a rien de bien compliqué.
    https://www.sqlshack.com/dynamic-sql-in-sql-server/

Discussions similaires

  1. [Mysql] Requêtes multiples simultanées
    Par bitardo dans le forum JDBC
    Réponses: 6
    Dernier message: 02/07/2007, 10h46
  2. [MySQL] mysql requête multiple
    Par Hayabusa dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/05/2007, 16h20
  3. [AJAX] Requêtes multiples
    Par sbk.no.gaara dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/08/2006, 16h43
  4. [AJAX] Ajax requêtes multiples
    Par Teufboy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/08/2006, 18h23
  5. [requête] multiple count
    Par mandrake_of_mandregas dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 04/01/2006, 19h05

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