【问题标题】:create table with different queries mysql创建具有不同查询mysql的表
【发布时间】:2015-09-21 22:22:17
【问题描述】:

我想创建一个表格,其中包含工人的姓名、他建造的总平方米和支付的总成本。

我有两张桌子

tbl_orden 和 tbl_costos

obrero 是 tbl_costos 中的外键

这是我正在尝试的查询:

SELECT a.obrero AS MAESTRO, ROUND(SUM(metros_c),2) AS METROS, SUM(b.costo_semanal)
FROM tbl_orden as a, tbl_costos as b GROUP BY a.obrero

我正在尝试上述查询,但没有得到正确的结果。 metros_c 的 SUM 不正确,costo_semanal 的总和也不正确

tbl_order

  • id (int) 主键
  • name_obra (varchar)
  • num_fab (int)
  • 日期(日期)
  • 类型(varchar)
  • obrero (varchar)
  • metros_c (float)
  • 评论(varchar)

tbl_costos:

  • id (int) 主键
  • costo_semanal(浮点数)
  • obrero(来自 tbl_order 的外键)
  • fechai(日期)
  • fechaf(日期)

我想要这个查询结果:

 SELECT obrero AS Maestro, ROUND(SUM(metros_c),2) AS Metros_Cuadrados, ROUND(SUM(metros_c)/MONTH(CURDATE()),2) as Promedio_Mensual, ROUND(SUM(metros_c)/WEEK(CURDATE()),2) as Promedio_Semanal FROM `tbl_orden`
          WHERE dated BETWEEN '01/01/2015' AND '01/01/2016' GROUP BY obrero ORDER BY metros_c asc

这个查询会导致上表的其他列:

SELECT SUM(costo_semanal) from tbl_costos GROUP BY obrero

第一个查询我得到 4 列,第二个我得到 1 个。我想要一个包含 5 列的结果表

【问题讨论】:

  • 请分享您的表格结构、一些示例数据以及该数据的预期结果。

标签: mysql sql database


【解决方案1】:

您可以将每个放入内联视图中,然后加入它们来执行此操作:

select x.*,
       y.sum_costo_semanal
  from (select obrero as maestro,
               round(sum(metros_c), 2) as metros_cuadrados,
               round(sum(metros_c) / month(curdate()), 2) as promedio_mensual,
               round(sum(metros_c) / week(curdate()), 2) as promedio_semanal
          from tbl_orden
         where dated between '01/01/2015' and '01/01/2016'
         group by obrero) x
  join (select obrero,
               sum(costo_semanal) as sum_costo_semanal
          from tbl_costos
         group by obrero) y
    on x.obrero = y.obrero

【讨论】:

  • 哇,不得不改变一些小事,但这个答案是正确的!谢谢!
  • 如果我想在 Y 表中添加更多列怎么办?但不是所有的??因为我不能做 y.sum_costo_semanal, y.whatever, y.other
  • 您只需要注意添加列对总和的影响,因为您选择的任何其他列也必须添加到 group by 子句,这将相应地更改金额。如果您想要每个 obrero 的总和,而不是该总和以及您所指的任何其他列,您将不得不使用第三个内联视图并可能将其命名为 Z。这完全取决于您想要的方式为 Y 中的总和分组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多