Mysql 在另一个表中列出的多个表中按公共列进行分组
我有一个具有以下结构的db。“我的机构”表中的每一行都有一个保存在单独表中的每日信息。我们需要的是如何查询db,以便在Mysql 在另一个表中列出的多个表中按公共列进行分组,mysql,sql,database,Mysql,Sql,Database,我有一个具有以下结构的db。“我的机构”表中的每一行都有一个保存在单独表中的每日信息。我们需要的是如何查询db,以便在\u info表中获得按相应天数分组的每个机构信息表的价格列之和。我的数据库是MySQL 表机构: id | institution_name | institution_info_table_name ----------------------------------------------------- 1 | "A" | "A_info" --
\u info
表中获得按相应天数分组的每个机构信息表的价格列之和。我的数据库是MySQL
表机构:
id | institution_name | institution_info_table_name
-----------------------------------------------------
1 | "A" | "A_info"
-----------------------------------------------------
2 | "B" | "B_info"
表A\u info
:
id | date | price
-----------------------
1 | 2013/02/12 | 12
-----------------------
2 | 2013/02/13 | 20
id | date | price
-----------------------
1 | 2013/02/12 | 30
-----------------------
2 | 2013/02/13 | 50
表B_info
:
id | date | price
-----------------------
1 | 2013/02/12 | 12
-----------------------
2 | 2013/02/13 | 20
id | date | price
-----------------------
1 | 2013/02/12 | 30
-----------------------
2 | 2013/02/13 | 50
输出:
date | price
------------------
2013/02/12 | 42
------------------
2013/02/13 | 70
编辑:
我尝试了以下查询,但无法正常工作:
"select sum( A_info.price) ,A_info.date from A_info,B_info group by date"
你试过这个基本的查询吗
select A_info.price+B_info.price from A_info, B_info where A_info.id=B_info.id and
A_info.data=B_info.date;
这很简单,尽可能地尝试
select
x.date,
sum(x.price) as price
from
(
(
select
date,
sum(price) as price
from A_info
group by date
)
union all
(
select
date,
sum(price) as price
from B_info
group by date
)
)x
group by x.date
看起来像一个简单的查询。你试过什么吗?@RagingBull我更新了我的问题!谢谢你,伙计,这是一项伟大的工作,但我需要根据我的
institutions
表中的行动态创建此查询。你能更新你的查询吗?所以你可能在机构中有更多的值,比如C-C_信息,D-D_信息等等?是的,我有100个!如果“institution\u info\u table\u name”列是动态的,则不能在一条sql语句中执行此操作。它可以在两个sql语句中完成,首先您必须从“instutution=>institution\u info\u table\u name”(第一个查询)中提取表名并放入字符串,然后是主查询,该查询按日期对价格进行分组,并在from子句中包含make字符串。您需要规范化该表,如果必须这样做,我会将机构表设置为(id,name,active=0,1)
另一个表将日期值存储为机构信息(id PK,id\u机构,date,price)
,这样使用JOIN和group by进行计算就很容易了。谢谢。但我需要按日期分组。