Php 从多个重新分配的表中检索值
因此,我有一个名为Php 从多个重新分配的表中检索值,php,mysql,sql,Php,Mysql,Sql,因此,我有一个名为clients的表,另一个名为orders,另外两个名为orders\u type\u a和orders\u type\u b 我要做的是创建一个查询,返回所有客户的列表,对于每个客户,它必须根据该客户的id和该客户已经花费的金额返回订单数量 而且。。。我不知道怎么做。我知道这背后的逻辑,但不知道如何将其转换为MySQL查询 我有一个基本的思考能力,但是我不了解MySQL,但是对于这种情况我真的很困惑 以下是一张图片,可以更好地说明我正在尝试的过程: 有用的额外信息: 每个
clients
的表,另一个名为orders
,另外两个名为orders\u type\u a
和orders\u type\u b
我要做的是创建一个查询,返回所有客户的列表,对于每个客户,它必须根据该客户的id和该客户已经花费的金额返回订单数量
而且。。。我不知道怎么做。我知道这背后的逻辑,但不知道如何将其转换为MySQL查询
我有一个基本的思考能力,但是我不了解MySQL,但是对于这种情况我真的很困惑
以下是一张图片,可以更好地说明我正在尝试的过程:
有用的额外信息:
- 每个
行只有一个订单
(即类型
或A
)B
- 每个
行可以有多个订单
(其中X是订单_type_X
或A
)B
- 订单通过列
client\u id
- 通过列
order\u id
更新宽度表列: 客户:
id | name | phone
订单:
id |客户| id |日期
订单\u类型\u a:
id |订单| id |商品数量|单品价格|
订单类型:
id |订单|编号|鞋11 |编号|鞋12 |编号|鞋13 |价格|单鞋
如需任何额外信息,请询问。如果我理解正确,您是否正在寻找类似的信息
select c.*, SUM(oa.value) + SUM(ob.value) as total
from clients c
inner join orders o on c.order_id = o.id
inner join orders_type_a oa on oa.id = o.order_type_id AND o.type = 'A'
inner join orders_type_b ob on ob.id = o.order_type_id AND o.type = 'B'
group by c.id
我不知道您的实际字段名,但这会返回每个客户的信息,外加一个字段“总计”,其中包含a型和B型所有订单的值之和。您可能需要调整各种名称以使其正常工作,但这能让你走上正确的方向吗?埃里克的答案是正确的。但是,由于每个订单可能有多个订单类型a和订单类型b记录,因此它稍微复杂一些:
SELECT c.id, c.name, c.phone, SUM(x.total) as total
FROM clients c
INNER JOIN orders o
ON o.client_id = c.id
INNER JOIN (
SELECT order_id, SUM(number_of_items * price_of_single_item) as total
FROM orders_type_a
UNION ALL
SELECT order_id, SUM((number_of_shoes_11 + number_of_shoes_12 + number_of_shoes_13) * price_of_single_shoe) as total
FROM orders_type_b
) x
ON x.order_id = o.id
GROUP BY c.id
;
我正在对如何根据订单类型表格中的列计算总额做一些假设。我添加了有关表格的更多信息,我认为现在更容易理解这个过程。我回家后会测试这个过程。出于某种原因,当我运行此查询时,它只返回两个客户,而不是所有客户。所有客户都有订单吗?