Mysql 使用不同的查询创建表

Mysql 使用不同的查询创建表,mysql,sql,database,Mysql,Sql,Database,我想创建一个包含工人姓名、他建造的总平方米以及他支付的总成本的表 我有两张桌子 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 我正在尝试上面的查询,但是我没有

我想创建一个包含工人姓名、他建造的总平方米以及他支付的总成本的表

我有两张桌子

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
我正在尝试上面的查询,但是我没有得到正确的结果。Metro_c之和不正确,costo_语义之和也不正确

tbl_订单

id int主键 name_obra varchar num_fab int 日期 类型varchar 奥布雷罗·瓦尔查尔 地铁浮球 注释varchar tbl_costos:

id int主键 costo_语义浮点 tbl_订单中的obrero外键 费柴日期 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列的结果表

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

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\u costo\u semanal,y.whatever,y.others,你只需要对添加列如何影响总和非常敏感,因为你选择的任何其他列也必须添加到group by子句中,这将相应地改变金额。如果您想要每个对象的和,而不是该对象的和以及您所指的任何其他列的和,那么您必须使用第三个内联视图,并可能将其命名为Z。这一切都取决于您希望如何在Y中对该和进行分组