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 :

Select from table names


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut Select from table names
    Bonjour à tous,

    Je cherche dans mes souvenirs comment réaliser une requête mais je ne retrouve pas de solution, ni sur le net d'ailleurs.

    J'ai x tables avec la même structure (x est supérieur à 100)
    Je chercher à extraire toutes les données de toutes ces tables en me basant sur leur nom.

    Je procède comme cela pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DECLARE @tableName VARCHAR(100)
     
    select  @tableName = [name]
    	FROM [BD].[dbo].[sysobjects]
    	WHERE xtype='U'
    	AND [name] LIKE 'DR%[_]ST[_]%' AND [name] not LIKE 'DR%[_]CS[_]%' AND [name] not LIKE 'DR%[_]RE[_]%'
    	ORDER BY [name] DESC
     
    -- Exécution 2ème select avec le nom de table en paramètre
    EXEC('SELECT * FROM ' + @tableName)
    Seulement, cette requête ne me renvoie les données que de la dernière table stockée dans @tablename.

    Comment puis-je procéder pour obtenir les données de toutes les tables ?

    D'avance merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 118
    Par défaut
    Bonjour,

    Il faut boucler sur chaque nom de table.
    Utiliser un curseur semble la meilleure solution.

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Merci

    J'ai effectivement pensé à un curseur mais le fait de lancer un EXEC va me renvoyer autant de requêtes que de tables.
    Je voudrais avoir les résultats de toutes les tables dans une seule et même requête.

  4. #4
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DECLARE @tableName VARCHAR(MAX)=''
     
    SELECT  @tableName = @tableName+'SELECT * FROM ' + @tableName[name]+char(13)
    FROM [BD].[dbo].[sysobjects]
    WHERE xtype='U'
        AND [name] LIKE 'DR%[_]ST[_]%' 
        AND [name] NOT LIKE 'DR%[_]CS[_]%' 
        AND [name] NOT LIKE 'DR%[_]RE[_]%'
        ORDER BY [name] DESC
     
    EXEC(@tableName)

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 002
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par calagan99 Voir le message
    Merci

    J'ai effectivement pensé à un curseur mais le fait de lancer un EXEC va me renvoyer autant de requêtes que de tables.
    Je voudrais avoir les résultats de toutes les tables dans une seule et même requête.
    faites un UNION ALL.

    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/ * * * * *

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

Discussions similaires

  1. SELECT * FROM TABLE@SCHEMA
    Par Jenesépa dans le forum SQL
    Réponses: 7
    Dernier message: 21/02/2011, 15h19
  2. select from table where in
    Par lcaya dans le forum SQL
    Réponses: 5
    Dernier message: 10/03/2010, 17h50
  3. JPA 2.0 Select * from table t where
    Par nouramin dans le forum JPA
    Réponses: 3
    Dernier message: 27/01/2010, 23h41
  4. Problème lors d'un select * from table
    Par smaildba dans le forum SQL
    Réponses: 1
    Dernier message: 12/11/2008, 12h36
  5. Select from table where
    Par kabalonda dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 25/07/2007, 17h43

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