Проблемы с Order By при повторении колонок

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

Ответить
_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Проблемы с Order By при повторении колонок

Сообщение _so_ » 15 май 2007, 09:01

FB 2.0.1.12855
Запрсо типа:
select ID, Name, Name from Classes Order By Name
падает:
Dynamic SQL Error
SQL error code = -204
Ambiguous field name between a field and a field in the select list with name
NAME

Я понимаю, что читать повторяющиеся клонки не хорошо, но иногда это надо. Особенно, когда запрос формируется динамически.

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 15 май 2007, 09:15

Это не падение, а сообщение о корявости твоего запроса, то есть не баг. Надо вот так:

Код: Выделить всё

select ID, Name as Name1, Name as Name 2 from Classes Order By Name1
либо

Код: Выделить всё

select ID, Name, Name from Classes Order By 2

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 15 май 2007, 09:43

Есть ещё третий способ - использовать алиасы таблиц.
Я вот тут разбирался с аналогичным.

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 15 май 2007, 11:37

CyberMax писал(а):Это не падение, а сообщение о корявости твоего запроса, то есть не баг
Насчет корявости может быть, но я писал, что он строится динамически.
Проблем с этим на других версиях раньше не встречалось (по крайней мере на IB влоть до 2007). И я не понимаю смысл ругательства, потому как все равно сортировать по какому полю почему и здесь нет join. Проверять в runtime запросы.
Примеров могли не проводить.
А насчет что это не баг спорно почему тогда запрос вида:

Код: Выделить всё

select C.ID, C.Name, C.Name from Classes C Order By C.Name
выполняется корректно, также относится к

Код: Выделить всё

select ID, Name, Name from Classes  Order By Classes.Name
Тогда уж и они должны были падать. Или здесь другой какой-то смысл?

_so_
Сообщения: 144
Зарегистрирован: 04 ноя 2004, 22:17

Сообщение _so_ » 15 май 2007, 11:42

WildSery писал(а):Есть ещё третий способ - использовать алиасы таблиц.
Я вот тут разбирался с аналогичным.
Почитал спасибо. Придется что-то думать.
На MS SQL работает также.

Ответить