2016-04-05 24 views
-2

「クロスは参加」は、私は2つのクエリを持っている2つのクエリ

SELECT 
     count(playsms_tblsmsoutgoing.uid) 
    FROM 
     playsms_tbluser 
    LEFT JOIN 
     playsms_tblsmsoutgoing 
    ON 
     playsms_tblsmsoutgoing.uid = playsms_tbluser.uid 
    AND 
     MONTH(STR_TO_DATE(p_datetime, '%Y-%m-%d')) = 11 
    AND  
     YEAR(STR_TO_DATE(p_datetime, '%Y-%m-%d')) = 2015 
WHERE 
     playsms_tbluser.flag_deleted = 0 
GROUP BY 
     playsms_tbluser.name` 

クエリ2:

SELECT 
     count(playsms_tblsmsoutgoing.uid) 
    FROM 
     playsms_tbluser 
    LEFT JOIN 
     playsms_tblsmsoutgoing 
    ON 
     playsms_tblsmsoutgoing.uid = playsms_tbluser.uid 
    AND 
     MONTH(STR_TO_DATE(p_datetime, '%Y-%m-%d')) = 12 
    AND 
     YEAR(STR_TO_DATE(p_datetime, '%Y-%m-%d')) = 2015 
WHERE 
     playsms_tbluser.flag_deleted = 0 
GROUP BY 
     playsms_tbluser.name` 

が、それは可能ですか?はいの場合はどうですか?私はその間に解決策を求めています。

答えて

0

各テーブルのエイリアスを作成し、いくつかのIDを使用して結合する必要があります。下のサンプルクエリでは、両方のテーブルの比較としてplaysms_tbluser.nameを使用します。

SELECT nov.name, countNov, countDec FROM 
(
    SELECT playsms_tbluser.name, count(playsms_tblsmsoutgoing.uid) as countNov 
    FROM playsms_tbluser LEFT JOIN playsms_tblsmsoutgoing 
    ON playsms_tblsmsoutgoing.uid = playsms_tbluser.uid 
    AND MONTH(STR_TO_DATE(p_datetime, '%Y-%m-%d')) = 11 AND YEAR(STR_TO_DATE(p_datetime, '%Y-%m-%d')) = 2015 
    WHERE playsms_tbluser.flag_deleted = 0 
    GROUP BY playsms_tbluser.name 
) as nov 
INNER JOIN 
(
    SELECT playsms_tbluser.name, count(playsms_tblsmsoutgoing.uid) as countDec 
    FROM playsms_tbluser LEFT JOIN playsms_tblsmsoutgoing 
    ON playsms_tblsmsoutgoing.uid = playsms_tbluser.uid 
    AND MONTH(STR_TO_DATE(p_datetime, '%Y-%m-%d')) = 12 AND YEAR(STR_TO_DATE(p_datetime, '%Y-%m-%d')) = 2015 
    WHERE playsms_tbluser.flag_deleted = 0 
    GROUP BY playsms_tbluser.name 
) as dec ON nov.name = dec.name 
関連する問題