当前位置: 首页 > 知识库问答 >
问题:

连接表中的列和SQL PHP不工作[重复]

壤驷凯
2023-03-14

我正在尝试计算并从表table_two中获得列count的和。我试图通过left join函数获取列的和。但是它不能正常工作,我得到的列的和行的次数存在于table_two中。

我在left join的union表中不是很好,你能帮助我如何在我的代码中使用union函数吗。我展示了这个StackOverflow上的多个线程,但相信我,它很难理解,而且非常大。这就是为什么我在这里做了一个小桌子的帮助和容易理解。

先生,请帮我别把它标为重复和关闭的。我尝试了过去的1个星期,但没有代码工作。

我在试密码是-

SELECT *, SUM(table_two.count) AS totalQTY, SUM(table_one.qty) AS totalReqQty 
    FROM table_one 
    LEFT JOIN table_two 
        ON table_one product_key = product_code 
    LEFT JOIN product_table 
        ON table_two.product_code = product_table.product_ids

table_one

|  ID  | product_key      |  insert_date |  qty 
|------|------------------|--------------|------
|  1   | 123456789        |  2021-02-01  |  150    
------------------------------------------------

table_two

|  ID  | product_code      |  add_date    |  count 
|------|-------------------|--------------|-------
|  1   | 123456789         |  2021-02-02  |   10
|  2   | 123456789         |  2021-02-03  |   20
|  3   | 123456789         |  2021-02-04  |   5
--------------------------------------------------

PRODUCT_TABLE

|  ID  | product_ids       |  product_name   
|------|-------------------|----------------------
|  1   | 123456789         |  XYZ
--------------------------------------------------

需要输出:

|  ID  | product_key       |  product_name  |  qty  | count |
|------|-------------------|---------------------------------
|  1   | 123456789         |  XYZ           |  150  |  35   | 
-------------------------------------------------------------

共有2个答案

陶英纵
2023-03-14

您向我们显示的查询不起作用。

如果您希望通过使用聚合函数(如SUM())来汇总/滚动/您的数据,最好是在不使用这些函数的情况下运行查询。例如:

SELECT *
    FROM table_one 
    LEFT JOIN table_two 
        ON table_one.product_key = table_two.product_code 
    LEFT JOIN product_table 
        ON table_two.product_code = product_table.product_ids

你得到这个结果。请注意,它有三行,数量150显示在所有三行中。

龙欣德
2023-03-14

您还没有对正在使用的数据库进行标记,但是,从每个数据库获取聚合的一种方法是使用apply

我还建议您修改ProductId命名约定中的不一致之处,您将其称为PRODUCT_CODEPRODUCT_KEYPRODUCT_IDS。决定怎么称呼它并保持一致会让别人容易理解得多。

select p.product_ids as product_key, p.product_name, coalesce(q.Qty,0) totalQty, coalesce(c.[count],0) [Count]
from product_table p
outer apply (
    select sum(qty) Qty
    from table_one t1
    where t1.product_key=p.product_ids
    group by t1.product_key
)q
outer apply (
    select Sum(count) [count]
    from table_two t2
    where t2.product_code=p.product_ids
    group by t2.product_code
)c

另一种方法是简单地连接表,并按每个产品的列分组,然后聚合数量。

select p.product_ids as product_key, p.product_name, Coalesce(Sum(q.Qty),0) TotalQty, Coalesce(Sum(c.[count]),0) [count]
from product_table p
left join table_one t1 on t1.product_key=p.product_ids
left join table_two t2 on t2.product_code=p.product_ids
group by p.product_ids, p.product_name
 类似资料:
  • 在这个示例中,我有两个表,包含我的客户和一家办公用品商店的产品的数据。如下所示: 上面的表主要功能是为第三个表,即订单表,提供所需的数据 使用订单表,我可以从客户和产品表中获得我需要的报告的快速摘要。当我想查看每个客户每件商品的购买数量时,问题就开始了。 比如这些表格。 使用上面的表格,我需要创建一个报告,显示每个项目的每个客户的购买数量。 像这样。 我已经使用通过来显示项目,但是我现在的代码太长

  • 问题内容: 可以说我有两个表:Persons(P_Id,Name)和Orders(O_Id,OrderNo,P_Id)…我想做一个左联接,它是: 这将给我同一人的不同行号的多个行。我真正需要获得的是每个人一行,并且列表中属于该人的所有OrderNo。 使用Coldfusion,我可以查询Persons表,遍历每条记录,并针对每条记录对Orders进行查询,并获取该P_Id的结果并将其放在列表中,并

  • 我有多张谷歌表。所有数据列都具有相同的名称(id、日期、金额),但列数不同:在第1页中,“id”列是A列,在第2页中“id”列可以是C列或任何其他列。 我正在尝试创建一个主工作表,从所有工作表中提取所有数据并按列名排列。尝试使用Query,但它似乎可以与列id(A,B)一起工作,而在我的例子中,id(A,B)正在发生变化。 这是一张样品单

  • 我试图以编程方式建立一些连接。问题是,当绘制连接时,会创建新的endpoint,而现有endpoint不再可单击。我确实有拖动行为的endpoint。我无法让endpoint(由连接创建)具有与原始endpoint相同的属性。 我做了一个工作jsFiddle:http://jsfiddle.net/SCSaf/4/ 在下面的代码中,初始化容器并绘制连接 在公共变量中,我尝试将源endpoint(e

  • 我正在准备一份投资跟踪表。对于overview页面,我想查询并合并来自每个account选项卡的数据,但我很难弄清楚如何才能做到这一点。 以下是我的测试表链接:https://docs.google.com/spreadsheets/d/14sZmxkM65ax9BKrkjinwOrOQPrS_xhqPPLs68Rggii4/edit 我尝试使用的公式位于Overview选项卡的J列中。此公式适用

  • 这里的结果是错误的,我不确定为什么。请帮忙