Общее количество из нескольких таблиц Mysql Query - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть таблица со списком, которая в основном содержит одно и то же поле в каждой части.

- p_xl_cj_ticket_m_site_data      |  - p_xl_cj_ticket     |  - p_xl_cj_ticket_last_row_ingroup
- p_xl_jabo1_ticket_m_site_data   |  - p_xl_jabo1_ticket  |  - p_xl_jabo1_ticket_last_row_ingroup
- p_xl_jabo2_ticket_m_site_data   |  - p_xl_jabo2_ticket  |  - p_xl_jabo2_ticket_last_row_ingroup

Что мне делать, если я хочу подсчитать все общее количество сайтов по ticket1, ticket2, ticket3?

Ожидаемый результат (всего из 3 таблиц выше):

enter image description here

Текущий код:

SELECT COUNT( * ) AS tot_sites, 
       IFNULL( COUNT( 
            CASE WHEN p_xl_cj_m_site_data.m_date_target = DATE( NOW( ) ) 
            THEN 1 ELSE NULL END ) , 0 ) AS todays_target, 
       IFNULL( COUNT( 
            CASE WHEN (p_xl_cj_m_site_data.m_date_target = DATE( NOW( ) ) 
                       AND p_xl_cj_ticket.t_status =9 ) 
            THEN 1 ELSE NULL END ) , 0) AS todays_achieve, 
       IFNULL( COUNT( 
            CASE WHEN p_xl_cj_ticket.t_status =9
            THEN 1 ELSE NULL END ) , 0 ) AS tot_in
FROM p_xl_cj_m_site_data
LEFT JOIN p_xl_cj_ticket_last_row_ingroup  
        ON p_xl_cj_ticket_last_row_ingroup.t_m_id = p_xl_cj_m_site_data.m_id
       AND p_xl_cj_ticket_last_row_ingroup.t_req_type =  '04_int_finish_ack'
LEFT JOIN p_xl_cj_ticket 
        ON p_xl_cj_ticket.t_id = p_xl_cj_ticket_last_row_ingroup.t_id
WHERE p_xl_cj_m_site_data.m_status =1

Пример данных:

p_xl_cj_ticket_m_site_data       p_xl_cj_ticket        p_xl_cj_ticket_last_row_ingroup     
------------------------------------------------------------------------------------  
* m_date_target = 2019-02-13    * t_status = 9         * t_m_id = xxxxx123
* m_status = 1                  * t_id = abc           * t_id = abc
* m_id = xxxxx123                                      * t_req_type = 04_int_finish_ack

Мой текущий код - просто счетчик билетов для p_xl_cj.

Как мне поступить, если я хочу сделать вывод, как ожидалось?

Спасибо...

1 Ответ

0 голосов
/ 14 февраля 2019
SELECT  (
    SELECT COUNT(*)
    FROM   <table>
    ) AS count1,
    (
    SELECT COUNT(*)
    FROM   <table>
    ) AS count2
...