有没有一种方法可以将这两个查询合并为一个查询,以便我可以检索两个数据“系列”以进行制图,同时仍保持单个日期的关系?

SELECT
        COUNT(j.id) AS power_count, jd.ber_rcvd
    FROM
        jobs j
        INNER JOIN job_dates jd
            ON jd.job_id = j.id
    WHERE j.tech = 7 AND jd.ber_rcvd != '0000-00-00' GROUP BY jd.ber_rcvd;
SELECT
        COUNT(j.id) AS transport_count, jd.ber_rcvd
    FROM
        jobs j
        INNER JOIN job_dates jd
            ON jd.job_id = j.id
    WHERE j.tech = 1 AND jd.ber_rcvd != '0000-00-00' GROUP BY jd.ber_rcvd;


我正在寻找的是这样的输出:

power_count | transport_count | ber_rcvd
    11 | 3 | 2013-03-01
     7 | 1 | 2013-03-02

最佳答案

使用GROUP BY函数:

SELECT j.tech, COUNT( j.id ) AS ber_count
FROM job j
    INNER JOIN job_dates jd ON jd.job_id = j.id
WHERE j.tech IN ( 7, 1 )
GROUP BY j.tech;


那应该给你两行,一行代表tech = 1,一行代表tech = 7。并且当您使用GROUP BY函数时,COUNT()将应用于每个分组。

为了回应更新的问题,请尝试以下操作:

SELECT COUNT( IF(j.tech=7,1,NULL)) AS power_count, COUNT( IF( j.tech = 1, 1, NULL )) AS transport_count, jd.ber_rcvd
FROM
    jobs j
    INNER JOIN job_dates jd
        ON jd.job_id = j.id
WHERE j.tech IN ( 1, 7 ) AND jd.ber_rcvd != '0000-00-00'
GROUP BY jd.ber_rcvd;


如果不是这样,请发布一些示例数据供我们使用。

10-08 15:52