2010-10-12 4 views
0

J'ai une table (DB_TableInfo) dans mon DB comme lerequête pour obtenir un nom de table en fonction de son ID

TableId   Type 
859374678  R 
579845658  B 
478625849  R 
741587469  E 
. 
. 
. 

ce tableau représente toutes les tables ci-dessous dans mon DB. Ce que je veux faire est d'écrire une requête pour sélectionner les tables de type 'R', obtenir leur ID et retourner le nom de la table appartenant à cet ID (la colonne TableName n'est pas disponible dans la table spécifiée)

Quelqu'un peut-il aide moi?

Je veux écrire une requête similaire à celle-ci!

SELECT TableID = OBJECT_NAME FROM [DB_TableInfo] WHERE Type = 'R' 
+3

Quelle base de données utilisez-vous? Où est stocké le nom de la table? Nous allons avoir besoin de plus d'informations sur le schéma. – LittleBobbyTables

+0

En fait, l'information que je connais sur la base de données est limitée puisque mon travail est différent, donc je ne sais rien, mais quels tableaux et SPs sont là ... de toute façon je pensais que les noms pouvaient être récupérés en utilisant sys.objects cette! – Reda

Répondre

1

De la mention de sys.objects et l'utilisation de crochets Je suppose que vous êtes sur SQL Server.

Vous pouvez utiliser la fonction object_name.

SELECT OBJECT_NAME(TableID) /*Might match objects that aren't tables as well though*/ 
FROM [DB_TableInfo] 
WHERE Type = 'R' 

Ou rejoindre sur sys.tables

SELECT T.name 
FROM [DB_TableInfo] D 
join sys.tables T ON D.TableID = T.object_id 
WHERE D.Type = 'R' 

Et pour exclure les tables vides

SELECT t.name 
FROM DB_TableInfo d 
JOIN sys.tables t ON d.TableId = t.object_id 
JOIN sys.dm_db_partition_stats ps ON ps.object_id = t.object_id 
WHERE d.Type = 'R' and ps.index_id <= 1 
GROUP BY d.TableId, t.name 
HAVING SUM(ps.row_count) > 0 
+0

vérifier ma modification dans le post. J'ai essayé cette requête mais elle m'a donné une erreur – Reda

+0

@Reda - Parce que vous ne l'utilisiez pas correctement. Comparez ma requête avec votre requête! –

+0

thx beaucoup Martin Smith cela a fonctionné =) – Reda

Questions connexes