【发布时间】:2020-03-28 03:18:30
【问题描述】:
我遇到了以下问题
我想在这两个代码中使用 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
我想在每个查询中获取 jum 的组合数,我可以用 1 个查询而不是这两个来做些什么吗?因为在 php echo 上循环它很麻烦。
谢谢
【问题讨论】:
-
你现在得到了什么,而不是预期的结果?你没说。我也看不到您在哪里查询/回显。样本数据是什么?
-
从这两个代码中,我得到了我想要的数据。工作日和星期六的“特殊时间”。但我很难将这两者组合成 1 个查询,或者将其放入我的 php.ini 文件中。 @FunkFortyNiner
-
请使用标准语法和标点符号。这也不清楚。使用足够多的单词、句子和对部分示例的引用来清楚完整地表达您的意思。请在代码问题中给出minimal reproducible example--剪切&粘贴&可运行代码,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。展示您尝试过的内容以及卡在哪里。请通过编辑而不是 cmets 进行澄清。