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
  • 每个
    订单
    行可以有多个
    订单_type_X
    (其中X是
    A
    B
  • 订单通过列
    client\u id
  • 通过列
    order\u id
这个过程现在是通过执行一个查询来检索客户机,然后从返回的每个条目代码执行另一个查询(使用php)来检索订单,再执行另一个查询来检索值。因此,对于第一个查询返回的每一行,基本上都有另外两行。不用说,这是一个可怕的方法,性能很差,我想这就是我想要改变它的原因


更新宽度表列:

客户:

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
;

我正在对如何根据订单类型表格中的列计算总额做一些假设。

我添加了有关表格的更多信息,我认为现在更容易理解这个过程。我回家后会测试这个过程。出于某种原因,当我运行此查询时,它只返回两个客户,而不是所有客户。所有客户都有订单吗?