MYSQL多个表各有多个结果

时间:2015-03-04 17:54:05

标签: mysql

我是新来的,所以如果有什么我做错了我道歉。

我正在尝试在MYSQL上获得一些表结果我有这两个表:

Table_1 (id, date_from, date_to)

Table_2 (date, x)

我需要做的是,对于表1中的每条记录,获取下一个结果

(id,date_from,date_to,sum(x))

例如,如果我有这样的记录:

表1:

1|date1|date5
2|date3|date4
3|date2|date5

表2:

date1|7
date2|5
date3|1
date4|4
date5|3

查询应该显示:

1|date1|date5|20
2|date3|date4|5
3|date2|date5|13

我到目前为止的查询不起作用,是这样的:

Select 
  a.id, 
  a.date_from, 
  a.date_to, 
  sum(b.x) 
from table1 a 
inner join table_2 b 
on b.date >= a.date_from 
  and b.date <= a.date_to

谢谢!

3 个答案:

答案 0 :(得分:0)

尝试添加“group by a.date_from”,以便您的语句变为:

从表1中选择a.id,a.date_from,a.date_to,sum(b.x)b.date&gt; = a.date_from和b.date&lt; = a.date_to中的内连接table_2 b 按a.date_from分组

答案 1 :(得分:0)

如果a.id是唯一键,那么:

SELECT 
  a.id, 
  a.date_from, 
  a.date_to, 
  SUM(b.x) 
FROM table1 a 
LEFT JOIN table_2 b 
ON  b.date >= a.date_from 
  AND b.date <= a.date_to
GROUP BY a.id

答案 2 :(得分:0)

你快到了。您只需要按id,date_from和date_to

进行分组
Select 
  a.id, 
  a.date_from, 
  a.date_to, 
  sum(b.x) 
from table1 a 
inner join table_2 b 
on b.date >= a.date_from 
  and b.date <= a.date_to
group by a.id, a.date_from, a.date_to