Подсчитать общее количество из нескольких таблиц Mysql Query

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

- 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?

Expected Output (Total from 3 tables above):

Подсчитать общее количество из нескольких таблиц Mysql Query

Текущий код:

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.

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

Спасибо...

Позвольте нам помочь вам, разместите образцы данных и ожидаемый результат для этих данных.

Radim Bača 14.02.2019 08:16

Такая проблема является признаком плохой конструкции.

Strawberry 14.02.2019 08:20

Какие данные вы хотите, я предоставлю @RadimBača

aldi 14.02.2019 08:25

Просто опубликуйте примерную таблицу (с данными) и ожидаемый результат, чтобы мы могли четко понять, что вы делаете.

Radim Bača 14.02.2019 08:28

@RadimBača Я уже добавил образцы данных для p_xl_cj, у меня все еще есть типы p_xl_jabo1, p_xl_jabo2. но он содержит то же самое с p_xl_cj. Как и мое ожидание выше, я хочу запросить общее количество

aldi 14.02.2019 08:45

У вас есть три стола, верно? Какая таблица p_xl_cj_m_site_data в вашем коде? Вы говорите: «Мой текущий код — это просто счетчик билетов для p_xl_cj», что такое p_xl_cj? В вашем вопросе нет ясности.

Radim Bača 14.02.2019 08:53

это просто способ упростить написание имени человека, у меня есть p_xl_cj_m_site_data, p_xl_jabo1_m_site_data, p_xl_jabo2_m_site_data. я сказал p_xl_cj только для того, чтобы вырезать _m_site_data. Но все в порядке, извините, что сбиваю вас с толку @RadimBača

aldi 14.02.2019 08:57
Освоение архитектуры микросервисов с 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
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
7
53
1

Ответы 1

SELECT  (
    SELECT COUNT(*)
    FROM   <table>
    ) AS count1,
    (
    SELECT COUNT(*)
    FROM   <table>
    ) AS count2

Не могли бы вы добавить к этому дополнительное объяснение, кроме кода, чтобы помочь ОП понять, почему ваш ответ будет работать.

rrd 14.02.2019 09:50

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