2つのテーブルを結合するクエリ

スティーブン・C.:

私は、次のような問題に出くわしました

私はこれらのtwopコード内全体でMySQLを使用して誰かの不在を合計したいと思います

SELECT  a.nama_account,
             a.jabatan,
             b.nama_tp,
             a.jam_berangkat,
             a.jam_pulang,
             (SUM(IF((jam_awal < jam_berangkat) AND (jam_akhir > jam_pulang),'1','0'))+dinas+dinastp) jum,
             DATEDIFF('$tgl2','$tgl1')+1 jumhar
            FROM t_account a
            LEFT JOIN t_tp b ON a.tp_ID=b.ID
            LEFT JOIN t_user c ON a.userCode=c.userCode
            LEFT JOIN (
                        SELECT  DATE(`tanggal`) tgl,
                            phoneNumber,
                            MIN(TIME( tanggal)) jam_awal,
                            MAX(TIME( tanggal)) jam_akhir,
                            SUM(IF(saran = '1234','1','0')) dinas,
                            SUM(IF(saran = '4321','1','0')) dinastp
                        FROM    t_report 
                        WHERE ( tanggal BETWEEN '$tgl1 00:00:00' AND '$tgl2 23:59:59' )
                        GROUP BY DATE(tanggal),phoneNumber
                     ) tlis
                 ON tlis.phoneNumber = a.`imei_number`
            WHERE a.grup_ID = '$grup'
            $queryIf
            AND (c.user_status !='3' AND c.user_status != '999') 
            GROUP BY a.`imei_number`
            ORDER BY b.nama_tp,a.jabatan

そして

SELECT  a.nama_account,
             a.jabatan,
             b.nama_tp,
             a.jam_berangkat,
             a.jam_pulang,
             (SUM(IF((jam_awal < jam_berangkat) AND (jam_akhir > '$jampulang_sabtu'),'1','0'))+dinas+dinastp) jum,
             DATEDIFF('$tgl2','$tgl1')+1 jumhar
            FROM t_account a
            LEFT JOIN t_tp b ON a.tp_ID=b.ID
            LEFT JOIN t_user c ON a.userCode=c.userCode
            LEFT JOIN (
                        SELECT  DATE(`tanggal`) tgl,
                            phoneNumber,
                            MIN(TIME( tanggal)) jam_awal,
                            MAX(TIME( tanggal)) jam_akhir,
                            SUM(IF(saran = '1234','1','0')) dinas,
                            SUM(IF(saran = '4321','1','0')) dinastp
                        FROM    t_report 
                        WHERE ( tanggal BETWEEN '$tgl1 00:00:00' AND '$tgl2 23:59:59') AND DAYNAME(tanggal)='Saturday'
                        GROUP BY DATE(tanggal),phoneNumber
                     ) tlis
                 ON tlis.phoneNumber = a.`imei_number`
            WHERE a.grup_ID = '$grup'
            $queryIf
            AND (c.user_status !='3' AND c.user_status != '999') 
            GROUP BY a.`imei_number`
            ORDER BY b.nama_tp,a.jabatan

私は1クエリではなく、これら二つを持って何かできることがあると、各クエリでJUMの組み合わせ数を取得したいですか?PHPのエコーでそれをloopInのにそのAトラブルので。

感謝

弱をGharbad:

@StevenC。あなたが使用する必要があるように聞こえるUNION一緒に2つのクエリの結果を配置します。

ここでは、あなたがそれを行うだろう方法は次のとおりです。

SELECT nama_account,
    jabatan,
    nama_tp,
    jam_berangkat,
    jam_pulang,
    jumhar,
    SUM(jum) AS jumTotal
FROM (
SELECT  a.nama_account,
             a.jabatan,
             b.nama_tp,
             a.jam_berangkat,
             a.jam_pulang,
             (SUM(IF((jam_awal < jam_berangkat) AND (jam_akhir > jam_pulang),'1','0'))+dinas+dinastp) jum,
             DATEDIFF('$tgl2','$tgl1')+1 jumhar
            FROM t_account a
            LEFT JOIN t_tp b ON a.tp_ID=b.ID
            LEFT JOIN t_user c ON a.userCode=c.userCode
            LEFT JOIN (
                        SELECT  DATE(`tanggal`) tgl,
                            phoneNumber,
                            MIN(TIME( tanggal)) jam_awal,
                            MAX(TIME( tanggal)) jam_akhir,
                            SUM(IF(saran = '1234','1','0')) dinas,
                            SUM(IF(saran = '4321','1','0')) dinastp
                        FROM    t_report 
                        WHERE ( tanggal BETWEEN '$tgl1 00:00:00' AND '$tgl2 23:59:59' )
                        GROUP BY DATE(tanggal),phoneNumber
                     ) tlis
                 ON tlis.phoneNumber = a.`imei_number`
            WHERE a.grup_ID = '$grup'
            $queryIf
            AND (c.user_status !='3' AND c.user_status != '999') 
            GROUP BY a.`imei_number`
            ORDER BY b.nama_tp,a.jabatan

UNION

SELECT  a.nama_account,
             a.jabatan,
             b.nama_tp,
             a.jam_berangkat,
             a.jam_pulang,
             (SUM(IF((jam_awal < jam_berangkat) AND (jam_akhir > '$jampulang_sabtu'),'1','0'))+dinas+dinastp) jum,
             DATEDIFF('$tgl2','$tgl1')+1 jumhar
            FROM t_account a
            LEFT JOIN t_tp b ON a.tp_ID=b.ID
            LEFT JOIN t_user c ON a.userCode=c.userCode
            LEFT JOIN (
                        SELECT  DATE(`tanggal`) tgl,
                            phoneNumber,
                            MIN(TIME( tanggal)) jam_awal,
                            MAX(TIME( tanggal)) jam_akhir,
                            SUM(IF(saran = '1234','1','0')) dinas,
                            SUM(IF(saran = '4321','1','0')) dinastp
                        FROM    t_report 
                        WHERE ( tanggal BETWEEN '$tgl1 00:00:00' AND '$tgl2 23:59:59') AND DAYNAME(tanggal)='Saturday'
                        GROUP BY DATE(tanggal),phoneNumber
                     ) tlis
                 ON tlis.phoneNumber = a.`imei_number`
            WHERE a.grup_ID = '$grup'
            $queryIf
            AND (c.user_status !='3' AND c.user_status != '999') 
            GROUP BY a.`imei_number`
            ORDER BY b.nama_tp,a.jabatan
) AS derivedTable
GROUP BY nama_account,
    jabatan,
    nama_tp,
    jam_berangkat,
    jam_pulang,
    jumhar;

あなたはそこに行く:の値の選択肢が全部でjum2つのクエリからを。

お役に立てれば。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=373235&siteId=1
おすすめ