Псевдоним оператора CASE

Мне нужна ваша помощь, чтобы решить проблему, с которой я столкнулся ... Я использую функцию CASE и добавляю псевдоним к ее результату, добавляя «AS 'RESULT» после ее «END».

Событие, хотя запрос кажется запущенным, я все еще получаю следующие предупреждения через phpmyadmin:

Нераспознанное ключевое слово (рядом с AS)

Неожиданный токен (рядом с "РЕЗУЛЬТАТ")

Понятия не имею, почему я получаю это ... Буду признателен за вашу помощь, чтобы выделить мою ошибку ;-)

            SELECT
            app_fd_List_of_components.c_component,
            app_fd_List_of_orders.c_package,
            app_fd_List_of_orders.c_status,
            app_fd_List_of_orders.dateCreated,
            app_fd_List_of_orders.c_orderId,
            app_fd_List_of_orders.Id,
            temptablename.datetime AS Int_Date,
            temptablename2.datetime AS Prdw3_Date,
            @counterStatus := IF(
            app_fd_List_of_orders.c_status <> 'Deployment completed',
            IF(
            temptablename.datetime IS NOT NULL,
            'Counting',
            'Initializing'
            ),
            'Complete'
            ) AS 'Counter_status',
            @counter := IF(
            app_fd_List_of_orders.c_status <> 'Deployment completed',
            IF(
            temptablename.datetime IS NOT NULL,
            (
            35 - DATEDIFF(
            CURRENT_DATE(), temptablename.datetime)
            ),
            'n/a'
            ),
            DATEDIFF(
            temptablename2.datetime,
            temptablename.datetime
            )
            ) AS 'Counter',


            CASE (WHEN(
            (@counterStatus = 'Counting') AND(@counter < 0)
            ) THEN "black" WHEN(
            (@counterStatus = 'Counting') AND(@counter > 5)
            ) THEN "green" WHEN(
            (@counterStatus = 'Counting') AND(-1 < @counter < 5)
            ) THEN "orange" WHEN(
            (@counterStatus = 'Complete') AND(@counter > 35)
            ) THEN "black" WHEN(
            (@counterStatus = 'Complete') AND(@counter < 35)
            ) THEN "green" ELSE "n/a")
            END AS 'RESULT'


            FROM
            app_fd_List_of_orders
            JOIN app_fd_List_of_components ON 
            app_fd_List_of_orders.c_component = app_fd_list_of_components.id
            LEFT JOIN(
            SELECT app_form_data_audit_trail.datetime,
            app_form_data_audit_trail.data
            FROM
            app_form_data_audit_trail
            WHERE
            SUBSTRING_INDEX(
            SUBSTRING_INDEX(
            app_form_data_audit_trail.data,
            '"opdetails":"',
            -1
            ),
            '"',
            1
            ) = 'int'
            ) AS temptablename
            ON
            app_fd_list_of_orders.c_orderid = SUBSTRING_INDEX(
            SUBSTRING_INDEX(
            temptablename.data,
            '"orderId":"',
            -1
            ),
            '"',
            1
            )
            LEFT JOIN(
            SELECT app_form_data_audit_trail.datetime,
            app_form_data_audit_trail.data
            FROM
            app_form_data_audit_trail
            WHERE
            SUBSTRING_INDEX(
            SUBSTRING_INDEX(
            app_form_data_audit_trail.data,
            '"opdetails":"',
            -1
            ),
            '"',
            1
            ) = 'prdw3'
            ) AS temptablename2
            ON
            app_fd_list_of_orders.c_orderid = SUBSTRING_INDEX(
            SUBSTRING_INDEX(
            temptablename2.data,
            '"orderId":"',
            -1
            ),
            '"',
            1
            )

Старайтесь использовать правильный отступ, так будет легче обнаруживать ошибки.

EzLo 12.06.2018 17:40

В чем вы оправдываете синтаксис / langauge intro / summary, что то, что вы написали, является правильным? (Риторический.) Пожалуйста, прочтите и действуйте по минимальный воспроизводимый пример. И Как спросить и текст при наведении курсора на стрелку вниз.

philipxy 12.06.2018 22:01
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
2
33
1

Ответы 1

Вы пробовали убрать скобки вокруг оператора CASE?

CASE
    WHEN @counterStatus = 'Counting' AND @counter < 0 THEN "black" 
    WHEN @counterStatus = 'Counting' AND @counter > 5 THEN "green" 
    WHEN @counterStatus = 'Counting' AND -1 < @counter < 5 THEN "orange" 
    WHEN @counterStatus = 'Complete' AND @counter > 35 THEN "black" 
    WHEN @counterStatus = 'Complete' AND @counter < 35 THEN "green" 
    ELSE "n/a"
 END AS 'RESULT'

Обновлено: Я тоже не уверен, что это возможно:

WHEN @counterStatus = 'Counting' AND -1 < @counter < 5 THEN "orange"

Возможно, его нужно будет записать как:

WHEN @counterStatus = 'Counting' AND -1 < @counter AND @counter < 5 THEN "orange" 

Другие вопросы по теме