Rownum и порядок выравнивания не работают должным образом - PullRequest
0 голосов
/ 08 мая 2019

Я не хочу быть заказом по идентификатору канала. Все, что я хочу, это заказать по book_date для всего канала.

SELECT * FROM 
    ( 
    SELECT CAST(@rownum := @rownum +1 AS signed integer) AS row_cnt  
        , id /* index */ 
        , CASE WHEN 0 < (SELECT count(*) FROM cmsDB.g_room_type WHERE name = t1.room_type AND chanel_mgt_id = t1.chanel_mgt_id) THEN '정상' ELSE '비매칭' END AS status  
        , DATE_FORMAT(book_date,'%Y-%m-%d') AS book_date 
        , room_type 
        , (SELECT info.room_name FROM cmsDB.g_room_info info, cmsDB.g_room_type tp WHERE info.id = tp.room_info_id AND tp.name = t1.room_type AND tp.chanel_mgt_id = t1.chanel_mgt_id GROUP BY info.room_name) AS room_name 
        , DATEDIFF(check_out_date,check_in_date) AS night_cnt 
        , check_in_date 
        , check_out_date 
        , room_num 
        , book_name 
        , phone_num 
        , book_num 
        , reg_book_num 
        , deposit_price 
        , book_status 
        , client_status 
        , sub_chanel_sort 
        , t2.companyNm AS company_name 
        , t1.remarks 
        , t1.night_date 
        , t1.reg_status 
        , chanel_mgt_id 
        , (SELECT sort.name FROM cmsDB.g_chanel_sort sort WHERE sort.id = t2.chanelSortId) AS chanelName 
    FROM 
        cmsDB.e_cl_book_themoum t1 
        LEFT JOIN (
            SELECT 
                cm.id AS chanelMgtId
                , ci.name AS companyNm, cm.chanel_sort_id AS chanelSortId 
            FROM cmsDB.g_chanel_mgt cm, cmsDB.g_company_info ci 
            WHERE cm.company_info_id = ci.id) t2 
            ON t2.chanelMgtId = t1.chanel_mgt_id 
            , (SELECT @rownum := 0) r 
            WHERE 1=1 AND t1.chanel_mgt_id in ( 49 , 50 , 56 , 69 , 70 , 71 ) 
            ORDER BY t1.book_date asc 
    ) tbl ORDER BY 1 desc LIMIT 0,10 ;

Если вы сделаете это, результаты будут ...

https://i.stack.imgur.com/8B6Qi.png

Это результат.

Но желаемый результат - это порядок даты для всего channel_id.

1 Ответ

0 голосов
/ 08 мая 2019

Вместо порядка на 1 в зависимости от положения столбца в предложении выбора (первый столбец при выборе)

Вы должны использовать явный порядок, используя имя столбца

ORDER BY book_date desc LIMIT 0,10 ;

или

ORDER BY chanel_mgt_id, book_date desc LIMIT 0,10 ;

если вы хотите также row_cnt, добавьте имя столбца в нужную вам позицию

ORDER BY chanel_mgt_id, book_date, row_cnt    desc LIMIT 0,10 ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...