MySQL在同一查询中每行的特定条件+ PHP

时间:2019-02-11 20:03:23

标签: php mysql

  

请考虑我的桌子

  • 商店-包含我所有商店信息的表
  • zone-具有zone_id和区域名称的别名表。
  • store_zone-包含将商店更改为其他区域时的信息的表。
  • cashdesk-带有local_id的表,其中包含有关 每天和每个商店
  • 的收入

store_zone表:

+----+----------+---------+-------------+
| id | store_id | zone_id | modified_at |
+----+----------+---------+-------------+
|  1 |        1 |       2 | 2019-01-01  |
|  2 |        1 |       1 | 2019-01-04  |
|  3 |        2 |       4 | 2019-01-03  |
+----+----------+---------+-------------+
  • store_id是我的本地表ID的外键
  • 商店表还包含一个用于zone_id的fk
  • zone_id是我的区域表ID的外键
  

现在考虑我的问题:

  • 我需要选择所有商店
  • 获取每行(商店)的总和(收入)
  • 按区域过滤
  • 仅考虑与之间的local_zone表相对应的收入 日期。 (如果我选择了整个月,而当天更改了区域 15 ..我只关心前15天)。我可以使用php来帮助构建它。

类似:

$zone_modified_dates = //result of 
"SELECT modified_at 
FROM store_zone 
WHERE zone_id = 1 AND store_id = 1"
$zone_modified_dates = '2019-01-04'


SELECT sum(income) from cashdesk c
inner join store s ON s.id = c.store_id
inner join store_zone sz ON (sz.store_id = s.id AND sz.zone_id = z.id
WHERE zone_id = 1 
AND cashdesk created_at >= '2019-01-01' 
AND cashdesk created_at >= '2019-01-10'
AND //IF ZONE WAS CHANGED IN THIS CREATED_AT BETWEEN DATES ONLY CONSIDER THE DAYS THAT THE SPECIFIC ROW STORE WAS CONSIDERED ZONE 1
GROUP BY s.id

谢谢。

@edited,以更好地解释问题。

0 个答案:

没有答案