Отобразить выбранные таблицы с их coulm_name в разных столбцах - PullRequest
0 голосов
/ 04 октября 2018

У меня есть две таблицы TMP и TMP1, поэтому я хочу выбрать из syscolumns и получить имя столбца для 2 таблиц. Я хочу получить такой результат

tablename columnname  tablename1 columnname1

Tmp         col1        TMP1         col1

Tmp         col2        TMP1         col2

это то, что я пыталсяделать что не так:

select sc.name , sc1.name
from syscolumns sc inner join syscolumns sc1
on( sc.id=sc1.id and sc.id=object_id('TMP1'))
where sc.id=object_id('TMP')

1 Ответ

0 голосов
/ 04 октября 2018

Допущения:

  • это Sybase ASE
  • таблицы имеют одинаковое количество столбцов
  • имена столбцов одинаковы в 2 таблицах

Настройка:

create table TMP (col1 int, col2 int)
go
create table TMP1(col1 iny, col2 int)
go

Есть несколько способов сделать это, но мы настроим данный запрос:

select  'TMP' as tablename,
        sc.name as columnname,
        'TMP1' as tablename1,
        sc1.name as columname1

        -- can't join syscolumns on 'id' because each table has a unique object id;
        -- only thing we have to join on is the similarly named columns

from    syscolumns sc
join    syscolumns sc1
on      sc.name = sc1.name

where   sc.id  = object_id('TMP')
and     sc1.id = object_id('TMP1')

order by sc.name
go

 tablename columnname tablename1 columname1
 --------- ---------- ---------- ----------
 TMP       col1       TMP1       col1
 TMP       col2       TMP1       col2

Приведенный выше код был протестирован на ASE15.7 Сервер данных SP138.

...