【问题标题】:SQL sum and link fields in multiple tables多个表中的 SQL 求和和链接字段
【发布时间】:2013-10-28 08:55:30
【问题描述】:

表 1

prodUID (*)    plantID   ItemName   size     qty
   1              1      car        med       5
   2              1      car        small     2
   3              1      car        large     8
   4              1      truck      small     7
   5              1      truck      med       0
   6              1      truck      large     4
   7              1      van        small     0
   8              2      truck      large    10

表2

UID(*)  plantID  table2_plan_tid  table2_prodUID  itemname  size     num    wk
------------------------------------------------------------------------------
  1        1          1              car                    med        3    41
  2        1          2              car                    small      0    42    
  3        1          3              car                    large      6    41
  4        1          4              truck                  small      1    44
  5        1          5              truck                  med       10    45    
  6        1          6              truck                  large      1    43
  7        1          7              van                    small      7    42
  8        2          8              car                    med       10    41

表3

UID(*)  plantid  table3_wk  table3_prodUID  itemName  size     qty
------------------------------------------------------------------
  1        1        41           2          car       med       5
  2        1        41           3          car       large     7
  3        1        43           7          van       small     8

我想要得到的结果是

  • 对于植物 = ?和 wk 之间?和?
  • plantid = 1 并且 wk 介于 41 和 45 之间

  • 植物 ID 上表 1 的总数量

  • table2 在植物 ID 和几周内的总和
  • 表格上的总数量与植物 ID 和数周

以及一些如何将其与连接或子查询链接以获取

plantid  Itemname  qty   num   order
------------------------------------
   1     car        15    9     12
   1     truck      11   12      0
   1     van         0    7      8

我似乎无法得到正确的结果

我还考虑在所有表中放入 itemNameID 字段

如果这样会更容易

【问题讨论】:

  • 欢迎使用 StackOverflow:如果您发布代码、XML 或数据示例,在文本编辑器中突出显示这些行并单击“代码示例”按钮 ({ } ) 在编辑器工具栏上很好地格式化和语法高亮它!那么你也不需要那些乱七八糟的 <br/> 标签了!!

标签: sql


【解决方案1】:

你可以使用这个查询来实现你想要的:

SELECT table1.plantID, table1.ItemName, SUM(table1.qty), COALESCE(t2.num_sum, 0), COALESCE(t3.qty_sum, 0)
FROM table1
LEFT JOIN (SELECT plantid, itemname, SUM(num) AS num_sum
      FROM table2
      WHERE wk >= 41 AND wk <= 45
      GROUP BY plantID, itemname) t2 ON table1.plantID = t2.plantID AND table1.ItemName = t2.ItemName
LEFT JOIN (SELECT plantid, itemname, SUM(qty) AS qty_sum
      FROM table3
      WHERE table3_wk >= 41 AND table3_wk <= 45
      GROUP BY plantID, itemname) t3 ON table1.plantID = t3.plantID AND table1.ItemName = t3.ItemName
WHERE table1.plantid = 1
GROUP BY plantID, ItemName

See also live!

基本上,您加入 3 个查询以获得您想要的结果。 如果您尊重列名的某种和谐,那会更简洁。

【讨论】:

    猜你喜欢
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多