Что если вам дали задание написать запрос на незнакомой базе? А времени разбираться особо нет, нет ни схемы ни документации
Иногда спасает запрос, возвращающий семпл данных по каждому столбцу, с его помощью можно быстро определить где какие данные
DECLARE @FIELD1 VARCHAR(255), @FIELD2 VARCHAR(255),@FIELD3 VARCHAR(255)
DECLARE @SQL nvarchar(4000), @table_name varchar(10)
declare @sample table( field varchar(max))
declare @tabledata table( schemaname varchar(255), tablename varchar(255),columnname varchar(255), sqlvar varchar(max), val varchar(max))
declare @result nvarchar(4000) set @result = ''
DECLARE m_cursor CURSOR FOR
select
s.name, o.name,c.name --,t.name
from sys.columns c
inner join sys.objects o on c.object_id=o.object_id
-- inner join sys.systypes t on t.xtype = c.system_type_id
inner join sys.schemas s on s.schema_id = o.schema_id
where o.name in ( Ваши таблицы)
-- and c.name = 'ID'
order by s.name,o.name,c.column_id
OPEN m_cursor
FETCH NEXT FROM m_cursor
INTO @FIELD1,@FIELD2,@FIELD3
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'declare @sample table( field varchar(max)) ' +
'declare @result varchar(max) set @result = '''''+
'insert into @sample select distinct top 10 ' + @FIELD3 +
' FROM ' + @FIELD1+'.'+ @FIELD2 +
' select '''+@FIELD1+''',''' + @FIELD2+''',''' +@FIELD3+ ''' , @result'
--select @SQL
insert into @tabledata(schemaname,tablename,columnname,val)
exec(@SQL)
FETCH NEXT FROM m_cursor
INTO @FIELD1,@FIELD2,@FIELD3
END
CLOSE m_cursor;
DEALLOCATE m_cursor;
select * from @tabledata
Этот запрос поможет отсортировать таблицы в базе по количеству строк
SELECT sysobjects.Name , sysindexes.Rows FROM sysobjects
INNER JOIN sysindexes ON sysobjects.id = sysindexes.id
WHERE type = 'U' AND sysindexes.IndId < 2
ORDER BY Rows desc
И напоследок немного смайлов ))))
— Ой, мальчики, мне больше не наливайте — я уже такая, как вам надо!