объединяя 2 запроса в одном Mysql - PullRequest
0 голосов
/ 26 июня 2018

Первый запрос SQL:

SELECT COUNT(*) FROM (
    SELECT
        rec_business.personal_id,
        rec_business.id AS id,
        rec_personal.l_name AS last_name,
        rec_personal.f_name AS first_name,
        rec_personal.m_name AS middle_name,
        rec_business.bus_name AS bus_name,
        rec_business.reg_type AS reg_type,
        rec_business_type.name AS buss_type,
        rec_business.address AS address,
        rec_business.reg_date AS reg_date,
        rec_business.expire_date AS exp_date
    FROM
        rec_business
        INNER JOIN rec_personal ON rec_business.personal_id = rec_personal.id 
        INNER JOIN rec_business_type ON rec_business_type.id = rec_business.bus_nature
    WHERE rec_business.expire_date > NOW()
) t

Второй запрос SQL:

SELECT COUNT(*) FROM (
    SELECT
        rec_business.personal_id,
        rec_business.id AS id,
        rec_personal.l_name AS last_name,
        rec_personal.f_name AS first_name,
        rec_personal.m_name AS middle_name,
        rec_business.bus_name AS bus_name,
        rec_business.reg_type AS reg_type,
        rec_business_type.name AS buss_type,
        rec_business.address AS address,
        rec_business.reg_date AS reg_date,
        rec_business.expire_date AS exp_date
    FROM
        rec_business
        INNER JOIN rec_personal ON rec_business.personal_id = rec_personal.id
        INNER JOIN rec_business_type ON rec_business_type.id = rec_business.bus_nature
    WHERE rec_business.expire_date <= NOW()
) t

Как объединить эти два запроса в один

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

sum() - это правильная функция для того, что вы собираетесь вместо count():

SELECT SUM(CASE WHEN rcb.expire_date > NOW() THEN 1 ELSE 0 END) AS NotExpired,
       SUM(CASE WHEN rcb.expire_date <= NOW() THEN 1 END) AS Expired,
       COUNT(1) As TotalCount
FROM rec_business rcb INNER JOIN 
     rec_personal rcp
     ON rcb.personal_id = rcp.id INNER JOIN 
     rec_business_type rbt
     ON rbt.id = rcb.bus_nature;
0 голосов
/ 26 июня 2018

Это не проверено, но что-то вроде ....

SELECT 
COUNT(CASE WHEN rec_business.expire_date > NOW() THEN 1 END) AS NotExpired,
COUNT(CASE WHEN rec_business.expire_date <= NOW() THEN 1 END) AS Expired,
COUNT(1) As TotalCount
FROM rec_business
    INNER JOIN rec_personal
        ON rec_business.personal_id = rec_personal.id
    INNER JOIN rec_business_type
        ON rec_business_type.id = rec_business.bus_nature
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...