|
Псевдонимы таблиц ?
|
|||
---|---|---|---|
#18+
Вопрос следующй : Каковы правлила использования псевдонимов таблиц я имею ввиду SELECT * FROM Customers c Where c.ID= .... вопросы : 1. Какой диапазон видимости такого псевдонима ( в пределах одного запроса ? продцедуры ?) 2. Где можно объявлять ? только после FROM или еще как-то ? 3. Если сложный запрос с несколькими подзапросами то где надо объявлять и вообще какие здесь правила объявления таблиц, нехочеться их везде указывать ... пример SELECT *, (SELECT SUM(CostSum) FROM dbo.LAddCosts c WHERE c.LAgr_id = a.Lagr_id) AS AdditionalCosts, (SELECT COUNT(*) FROM dbo.LAgrDocs d WHERE d.LAgr_id = a.Lagr_id AND d.DocEx = 0) AS AllDocumentsExists FROM dbo.LAgreements a INNER JOIN с ON c.LAgr_id = a.Lagr_id таблица с не видна при JOIN .... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2001, 12:04 |
|
Псевдонимы таблиц ?
|
|||
---|---|---|---|
#18+
table_alias Is an alias for table_name, view_name, or rowset_function, used either for convenience or to distinguish a table or view in a self-join or subquery. An alias is often a shortened table name used to refer to specific columns of the tables in a join. If the same column name exists in more than one table in the join, SQL Server requires that the column name must be qualified by a table name or alias. (The table name cannot be used if an alias is defined). Если почитать BOL, то становиться понятно, что 1.Видимость в пределах запроса 2.Объявляется только для вида, таблицы или rowset-функции, соответственно во FROMе после имени таблицы(вида, функции) 3.Объявлять их необязательно, используются для того чтобы отличать колонки с одинаковыми именами. В примере ошибка мз-за того что JOIN должен быть связан с конкретной таблицей, а не с алиасом. Алиас - только для имён колонок ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2001, 12:23 |
|
Псевдонимы таблиц ?
|
|||
---|---|---|---|
#18+
>3.Объявлять их необязательно, используются для того чтобы отличать колонки с одинаковыми именами. В примере ошибка мз-за того >что JOIN должен быть связан с конкретной таблицей, а не с алиасом. Алиас - только для имён колонок Неправда В join-е можно алиасы использовать, а впримере не виден, потому что используется как раз не в пределах запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2001, 12:29 |
|
Псевдонимы таблиц ?
|
|||
---|---|---|---|
#18+
Спасибо, вроде разобрался !! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2001, 12:31 |
|
Псевдонимы таблиц ?
|
|||
---|---|---|---|
#18+
2Genady Ой, не знал что в join-е можно алиасы использовать. Из описания этого тоже не видно [ FROM { < table_source > } [ ,...n ] ] < table_source > ::= table_name [ [ AS ] table_alias ] [ WITH ( < table_hint > [ ,...n ] ) ] | view_name [ [ AS ] table_alias ] [ WITH ( < view_hint > [ ,...n ] ) ] | rowset_function [ [ AS ] table_alias ] | user_defined_function [ [ AS ] table_alias ] | derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ] | < joined_table > < joined_table > ::= < table_source > < join_type > < table_source > ON < search_condition > | < table_source > CROSS JOIN < table_source > | [ ( ] < joined_table > [ ) ] < join_type > ::= [ INNER | { { LEFT | RIGHT | FULL } [ OUTER] } ] [ < join_hint > ] JOIN А можно пример как их написать? Я попытался изобразить что-то типа select name, (select count(*) from syscolumns s inner join o on o.id=s.id) from sysobjects o но это неправильно. А как надо было написать? Или вообще какой-нибудь работающий пример, т.к. в хелпе это не описано. Заранее благодарен ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2001, 13:04 |
|
Псевдонимы таблиц ?
|
|||
---|---|---|---|
#18+
select name, (select count(*) from syscolumns s inner join sysobjects o on o.id=s.id) from sysobjects Вот так можно. В смысле что в выражении on можно писать А Вы имели в виду, что сразу после join? Если так, то я неправ ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2001, 13:36 |
|
Псевдонимы таблиц ?
|
|||
---|---|---|---|
#18+
так то и я могу У человека-то было написано: a INNER JOIN с ON c.LAgr_id = a.Lagr_id я про это написал и подумал что Вы с этим не согласны(типа так можно писать) я даже и не обратил внимания что это другой запрос вообщем, конценсус ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2001, 13:43 |
|
|
start [/forum/topic.php?fid=46&fpage=3587&tid=1827194]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 124ms |
0 / 0 |