Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Базы данных: SQL > Оператор AS некорректно ведет себя |
Автор: CoGNaC 25.12.16, 14:49 |
Всем привет! Делаю запрос на MySQL57 <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> SELECT h.SalesOrderID as test, test *test as Test2 FROM tb_salesOrderHeader h ; Возвращается ошибка: "Error Code: 1054. Unknown column 'test' in 'field list'" Как можно разрешить данную ситуацию,чтобы использовать новое название колонки? |
Автор: Akina 25.12.16, 15:35 |
Нет. Поле выходного набора получает имя после формирования этого набора. Будет лучше, если Вы озвучите задачу, а не свои попытки её решить. |
Автор: CoGNaC 25.12.16, 15:49 |
Akina, спасибо за ответ. Мне нужно произвести расчет некоторого поля, после использовать это поле в других расчетах и в итоге сформировать таблицу полностью. Сами вычисления примерно выглядят так: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> SELECT CASE p.ProductTopCategory WHEN 'Clothing' THEN CASE WHEN d.OrderQty >= 10 THEN 0.10 WHEN d.OrderQty >= 5 THEN 0.05 ELSE 0 END WHEN 'Accessories' THEN CASE WHEN d.OrderQty >= 10 THEN 0.11 WHEN d.OrderQty >= 5 THEN 0.04 ELSE 0 END ELSE 0 END AS Discount, d.OrderQty AS Quantity, p.ListPrice - Discount AS LineTotal FROM tb_salesOrderDetail d JOIN tb_salesOrderHeader h ON h.SalesOrderID = d.SalesOrderID JOIN tb_shipMethod shipMethod ON shipMethod.ShipMethodID = h.ShipMethodID JOIN bi_olap_22.product p ON d.ProductID = p.ProductID JOIN bi_olap_22.location l ON h.ShipToAddressID = l.AddressID ; Ошибка в поле Discount....Можно конечно несколько раз использовать структуру case,но будет как-то не эстетично... Как в таких ситуациях обычно поступают? |
Автор: Akina 25.12.16, 15:56 |
Обычно в ТАКИХ случаях в БД присутствует таблица, связывающая ProductTopCategory, OrderQty и Discount. |
Автор: CoGNaC 25.12.16, 16:01 |
Akina спасибо! Тогда сформирую все поэтапно. Забыл добавить, это лабораторка в институте, поэтому как и все теоретическое от практики далеко |