Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 select count(*) from nested table  [new]
relief
Member

Откуда:
Сообщений: 1197
привет
есть такой скрипт

create table #tbl1(name nvarchar(10), price decimal)
insert #tbl1 select 'moscow', 11.00001


create table #tbl2(name2 nvarchar(10), price decimal)
insert #tbl2 select 'moscow', 11.20002
insert #tbl2 select 'kiev', 11.00001

[b]select count(*)[/b] from 
(
select name, price, 0 from #tbl1
union select name2, price, 1 from #tbl2)  as t

drop table #tbl1
drop table #tbl2


как сделать select count(*) для результата работы union?
12 сен 12, 10:30    [13150055]     Ответить | Цитировать Сообщить модератору
 Re: select count(*) from nested table  [new]
Glory
Member

Откуда:
Сообщений: 104751
relief
как сделать select count(*) для результата работы union?

А предложенный скрипт разве этого не делает ?
12 сен 12, 10:31    [13150075]     Ответить | Цитировать Сообщить модератору
 Re: select count(*) from nested table  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
А что в вашем скрипте не так-то?
12 сен 12, 10:32    [13150083]     Ответить | Цитировать Сообщить модератору
 Re: select count(*) from nested table  [new]
relief
Member

Откуда:
Сообщений: 1197
Glory
relief
как сделать select count(*) для результата работы union?

А предложенный скрипт разве этого не делает ?


всё понял. была ошибка
автор
No column was specified for column 3 of 't'

оказывается надо было всем столбцам дать имя. ругался на 3 столбец.
но все равно непонятно почему он не мог взять count(*)? т.к. если я делаю так

select count(*) from 
(
select name as name, price, 0 as [b]tt [/b]from #tbl1
union select name2 as name, price, 1 as [b]tt1 [/b]from #tbl2)  as t


то он работает, несмотря на то что я даю разные названия столбцам
12 сен 12, 10:37    [13150116]     Ответить | Цитировать Сообщить модератору
 Re: select count(*) from nested table  [new]
Glory
Member

Откуда:
Сообщений: 104751
relief
но все равно непонятно почему он не мог взять count(*)?

relief
то он работает, несмотря на то что я даю разные названия столбцам

Вы хелпы не читаете принципиально или только про union ?

Сообщение было отредактировано: 12 сен 12, 10:40
12 сен 12, 10:39    [13150139]     Ответить | Цитировать Сообщить модератору
 Re: select count(*) from nested table  [new]
relief
Member

Откуда:
Сообщений: 1197
Glory
relief
но все равно непонятно почему он не мог взять count(*)?

relief
то он работает, несмотря на то что я даю разные названия столбцам

Вы хелпы не читаете принципиально или только про union ?


прочитал

автор
Is a query specification or query expression that returns data to be combined with the data from another query specification or query expression. The definitions of the columns that are part of a UNION operation do not have to be the same, but they must be compatible through implicit conversion. When data types differ, the resulting data type is determined based on the rules for data type precedence. When the types are the same but differ in precision, scale, or length, the result is determined based on the same rules for combining expressions. For more information, see Precision, Scale, and Length (Transact-SQL).


но здесь не написано. что должны быть имена у столбцов чтобы взяять count
12 сен 12, 10:51    [13150214]     Ответить | Цитировать Сообщить модератору
 Re: select count(*) from nested table  [new]
Glory
Member

Откуда:
Сообщений: 104751
relief
но здесь не написано. что должны быть имена у столбцов чтобы взяять count

Потому что это написано в статье про вложенные запросы.
Потому что count применяется к вложенному запросу, а не к union
12 сен 12, 11:04    [13150313]     Ответить | Цитировать Сообщить модератору
 Re: select count(*) from nested table  [new]
relief
Member

Откуда:
Сообщений: 1197
Glory
relief
но здесь не написано. что должны быть имена у столбцов чтобы взяять count

Потому что это написано в статье про вложенные запросы.
Потому что count применяется к вложенному запросу, а не к union


ссылку можно
12 сен 12, 11:25    [13150492]     Ответить | Цитировать Сообщить модератору
 Re: select count(*) from nested table  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Имена полей определяются первым SELECTом UNIONа.

У производных таблиц (derived tables) все поля должны иметь алиасы:
http://msdn.microsoft.com/ru-ru/library/ms177634(v=sql.100)
| derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ]
12 сен 12, 12:18    [13150920]     Ответить | Цитировать Сообщить модератору
 Re: select count(*) from nested table  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
iap
Имена полей определяются первым SELECTом UNIONа.

У производных таблиц (derived tables) все поля должны иметь алиасы:
http://msdn.microsoft.com/ru-ru/library/ms177634(v=sql.100)
| derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ]
Не совсем точная цитата.
Оказывается, все подробности про derived table у Microsoft нигде не задокументированы!
Или я плохо искал. Про имена полей UNION тоже что-то ничего не нашёл, хотя помню, что где-то что-то было.
12 сен 12, 12:31    [13151035]     Ответить | Цитировать Сообщить модератору
 Re: select count(*) from nested table  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
[quot iap]
iap
Про имена полей UNION тоже что-то ничего не нашёл, хотя помню, что где-то что-то было.

да вроде ничего нет обязательного

select 1, COUNT(*)
union all
select 1, 2


(No column name) (No column name)
1 1
1 2
12 сен 12, 14:05    [13151784]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить