На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
  
> Оператор AS некорректно ведет себя
    Всем привет! Делаю запрос на MySQL57
    ExpandedWrap disabled
        SELECT
          h.SalesOrderID as test,
          test *test as Test2
        FROM tb_salesOrderHeader h ;


    Возвращается ошибка: "Error Code: 1054. Unknown column 'test' in 'field list'"

    Как можно разрешить данную ситуацию,чтобы использовать новое название колонки?
      Нет. Поле выходного набора получает имя после формирования этого набора.

      Будет лучше, если Вы озвучите задачу, а не свои попытки её решить.
        Akina, спасибо за ответ. Мне нужно произвести расчет некоторого поля, после использовать это поле в других расчетах и в итоге сформировать таблицу полностью. Сами вычисления примерно выглядят так:
        ExpandedWrap disabled
            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,но будет как-то не эстетично... Как в таких ситуациях обычно поступают?
        Сообщение отредактировано: CoGNaC -
          Обычно в ТАКИХ случаях в БД присутствует таблица, связывающая ProductTopCategory, OrderQty и Discount.
            Akina спасибо! :) Тогда сформирую все поэтапно. Забыл добавить, это лабораторка в институте, поэтому как и все теоретическое от практики далеко :)
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0268 ]   [ 15 queries used ]   [ Generated: 18.04.24, 07:09 GMT ]