Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何从不同的表中添加不同的列?_Mysql_Add - Fatal编程技术网

Mysql 如何从不同的表中添加不同的列?

Mysql 如何从不同的表中添加不同的列?,mysql,add,Mysql,Add,我只是想从不同的表中添加不同的列。。。有人知道怎么做吗 假设我有3张表,如下所示 电视销售 空调销售 冷盘销售 表中的数据如下所示 1) 电视销售 2) 空调销售 3) 冷盘销售 Id Date NoOfSales Totalamount 1 03/05/2014 10 30000 2 04/05/2014 20 60000 3 05/05/2014 30

我只是想从不同的表中添加不同的列。。。有人知道怎么做吗

假设我有3张表,如下所示

  • 电视销售
  • 空调销售
  • 冷盘销售
  • 表中的数据如下所示

    1) 电视销售

    2) 空调销售

    3) 冷盘销售

       Id    Date        NoOfSales   Totalamount
    
       1    03/05/2014     10         30000
       2    04/05/2014     20         60000
       3    05/05/2014     30         70000
    
    现在我想从所有表中为特定的“日期”添加“Totalamount”
    例如,我需要2014年5月3日的totalamount为90000

    您可以通过将要在不同表上汇总的信息合并,然后将金额相加来解决问题。这看起来像:

       SELECT t.Date,SUM(t.Totalamount)
        FROM
        (
          SELECT Date,Totalamount
          FROM tvSales
          UNION ALL
          SELECT Date,Totalamount
          FROM acSales
          UNION ALL
          SELECT Date,Totalamount
          FROM coolerSales
        ) t
        WHERE t.Date='03/05/2014'
        GROUP BY t.Date
    

    union的字段必须具有相同的名称和类型,这一点很重要。如果它们的名称不同,则应在3个select查询中为2列创建公共别名,然后在主查询中使用这些别名。此外,还应执行包含ALL关键字的联合,以避免消除三个表中的重复记录。

    在MySQL中,最简单的方法是使用
    UNION ALL
    和聚合:

    select date, sum(totalamount) as TotalSales
    from ((select date, totalamount from TvSales
          ) union all
          (select date, totalamount from AcSales
          ) union all
          (select date, totalamount from CoolerSales
          )
         ) t
    group by date;
    
    使用
    union all
    的原因是为了防止不同表中的日期不同。
    join
    使行丢失成为可能


    第二,有三个格式相同的表表明数据库设计很差。您应该有一个包含销售额的表格和一个列,指明它所指的产品类型。

    谢谢您的回复……但是日期的条件在哪里呢……我想要特定日期的总销售额@GordonLinoff@user3531533 . . . 然后使用
    其中date=XXX
    而不是
    按日期分组
       SELECT t.Date,SUM(t.Totalamount)
        FROM
        (
          SELECT Date,Totalamount
          FROM tvSales
          UNION ALL
          SELECT Date,Totalamount
          FROM acSales
          UNION ALL
          SELECT Date,Totalamount
          FROM coolerSales
        ) t
        WHERE t.Date='03/05/2014'
        GROUP BY t.Date
    
    select date, sum(totalamount) as TotalSales
    from ((select date, totalamount from TvSales
          ) union all
          (select date, totalamount from AcSales
          ) union all
          (select date, totalamount from CoolerSales
          )
         ) t
    group by date;