Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / повтор имени поля в запросе / 5 сообщений из 5, страница 1 из 1
05.05.2014, 14:56
    #38633309
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
повтор имени поля в запросе
День добрый. Есть вопрос по поведению парсера
Код: sql
1.
2.
3.
4.
create table dbo.t_Test(a int)
select a, a from t_Test order by a  -- Ambiguous column name 'a'.
select a as b, a from t_Test order by a -- устраняем повторы имен, ошибка пропадает
select a, a from t_Test z order by z.a -- но почему она пропала здесь?


Microsoft SQL Server 2008 R2 (SP2) - 10.50.4302.0 (X64)
...
Рейтинг: 0 / 0
05.05.2014, 15:03
    #38633328
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
повтор имени поля в запросе
в ORDER BY можно использовать как имена полей, так и алиасы выражений

select a, a from t_Test z order by z.a -- но почему она пропала здесь? - здесь вы указали точные имя/алиас таблицы и имя поля
...
Рейтинг: 0 / 0
05.05.2014, 15:04
    #38633330
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
повтор имени поля в запросе
ShakillДень добрый. Есть вопрос по поведению парсера
Код: sql
1.
2.
3.
4.
create table dbo.t_Test(a int)
select a, a from t_Test order by a  -- Ambiguous column name 'a'.
select a as b, a from t_Test order by a -- устраняем повторы имен, ошибка пропадает
select a, a from t_Test z order by z.a -- но почему она пропала здесь?



Microsoft SQL Server 2008 R2 (SP2) - 10.50.4302.0 (X64)Наверно, в последнем случае он сразу видит, что поле находится в строго заданной таблице
и колонки всегда имеют одно и то же значение?
А во втором случае надо ещё сообразить, что во FROMе только одна таблица...

Интересный эффект. Вот что значит следовать правилу всегда и везде писать алиасы!
...
Рейтинг: 0 / 0
05.05.2014, 15:57
    #38633437
order by a
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
повтор имени поля в запросе
я вам еще "накину"


Код: sql
1.
select a, * from table order by a
...
Рейтинг: 0 / 0
05.05.2014, 16:06
    #38633451
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
повтор имени поля в запросе
order by aя вам еще "накину"


Код: sql
1.
select a, * from table order by a


вообще, вопрос как раз на этом примере и возник, перед постом слегка упростил

Gloryв ORDER BY можно использовать как имена полей, так и алиасы выражений

select a, a from t_Test z order by z.a -- но почему она пропала здесь? - здесь вы указали точные имя/алиас таблицы и имя поля

то есть, смысл в том чтобы явно указать, что для сортировки указан не алиас столбца или выражения, а настоящее имя поля из конкретного источника. ок, спасибо
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / повтор имени поля в запросе / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]