根据mysql中的日期范围计算关系表中的值的数量

问题描述 投票:0回答:1
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   |

sql mysql laravel join laravel-11
1个回答
0
投票

试试这个:

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
© www.soinside.com 2019 - 2024. All rights reserved.