table bayarlanjas
| tglbayar | bayarlanja |user_id|
| ---------- | ---------- |-------|
| 2024-01-05 | 10 | 1 |
| 2024-02-06 | 20 | 1 |
| 2024-03-07 | 30 | 1 |
| 2024-04-08 | 40 | 1 |
table zakats
| tglawalhaul| tglakhirhaul |user_id|
| ---------- | ------------ |-------|
| 2024-01-01 | 2024-02-25 | 1 |
| 2024-03-01 | 2024-04-25 | 1 |
我试过了
SELECT
zakats.*,
bayarlanjas.user_id,
sum(bayarlanja) AS total_bayar
FROM
`zakats`
LEFT JOIN `bayarlanjas` ON `bayarlanjas`.`user_id` = `zakats`.`user_id`
WHERE
`bayarlanjas`.`tglbayar` BETWEEN zakats.tglawalhaul
AND zakats.tglakhirhaul
AND `zakats`.`user_id` = 1
GROUP BY
`bayarlanjas`.`user_id`
但是错误: SQLSTATE[42000]:语法错误或访问冲突:1055 SELECT 列表的表达式 #1 不在 GROUP BY 子句中并且包含非聚合
我想要什么
| tglawalhaul| tglakhirhaul |total_bayar|user_id|
| ---------- | ------------ |-----------|-------|
| 2024-01-01 | 2024-02-25 | 30 | 1 |
| 2024-03-01 | 2024-04-25 | 70 | 1 |
试试这个:
SELECT
zakats.tglawalhaul,
zakats.tglakhirhaul,
zakats.user_id,
SUM(bayarlanjas.bayarlanja) AS total_bayar
FROM
zakats
LEFT JOIN bayarlanjas ON bayarlanjas.user_id = zakats.user_id
AND bayarlanjas.tglbayar BETWEEN zakats.tglawalhaul AND zakats.tglakhirhaul
WHERE
zakats.user_id = 1
GROUP BY
zakats.tglawalhaul,
zakats.tglakhirhaul,
zakats.user_id