Sql 一张表中id和时间作为条件查询另一张表

时间:2021-08-02 00:47:16
如图
表  A
id              min_time             max_time
1                2016-01-01         2016-05-01
2                2016-03-01          2016-05-01
3                2016-01-11          2016-04-01

表 B
id              min_time             max_time           no
1                2016-01-01         2016-05-01       100
2                2016-03-01          2016-05-01      101
3                2016-01-11          2016-04-01      102
1                2016-04-01         2016-05-01       103
2                2016-03-01          2016-05-01      104
3                2016-01-11          2016-04-01      105
表一作为条件,查询B中的数量,

8 个解决方案

#1


时间有交叉时成不成立?

如:
01-01 05-01--A
02-01  06-01--B


结果是只显示B表,数量用不用汇总

#2


表A的时间作为条件,在这之间的表B的no总数

#3


SELECT a.*,b.[no] FROM A INNER JOIN B ON a.ID=b.ID AND a.min_time<b.max_time AND b.min_time<a.max_time
 
给你写一个看看是不是这样效果

#4


SELECT a.ID,b.min_time,a.max_time,SUM(b.[no]) AS [no] FROM A INNER JOIN B ON a.ID=b.ID AND a.min_time<b.max_time AND b.min_time<a.max_time GROUP BY a.ID,b.min_time,a.max_time

#5


该回复于2016-05-23 13:15:09被管理员删除

#6


引用 4 楼 roy_88 的回复:
SELECT a.ID,b.min_time,a.max_time,SUM(b.[no]) AS [no] FROM A INNER JOIN B ON a.ID=b.ID AND a.min_time<b.max_time AND b.min_time<a.max_time GROUP BY a.ID,b.min_time,a.max_time


日期比较应该加上 “=”

#7


引用 6 楼 welcome5 的回复:
Quote: 引用 4 楼 roy_88 的回复:

SELECT a.ID,b.min_time,a.max_time,SUM(b.[no]) AS [no] FROM A INNER JOIN B ON a.ID=b.ID AND a.min_time<b.max_time AND b.min_time<a.max_time GROUP BY a.ID,b.min_time,a.max_time


日期比较应该加上 “=”


这是日期范围交集的用法,你没看懂

#8


引用 7 楼 roy_88 的回复:
Quote: 引用 6 楼 welcome5 的回复:

Quote: 引用 4 楼 roy_88 的回复:

SELECT a.ID,b.min_time,a.max_time,SUM(b.[no]) AS [no] FROM A INNER JOIN B ON a.ID=b.ID AND a.min_time<b.max_time AND b.min_time<a.max_time GROUP BY a.ID,b.min_time,a.max_time


日期比较应该加上 “=”


这是日期范围交集的用法,你没看懂

学习中

#1


时间有交叉时成不成立?

如:
01-01 05-01--A
02-01  06-01--B


结果是只显示B表,数量用不用汇总

#2


表A的时间作为条件,在这之间的表B的no总数

#3


SELECT a.*,b.[no] FROM A INNER JOIN B ON a.ID=b.ID AND a.min_time<b.max_time AND b.min_time<a.max_time
 
给你写一个看看是不是这样效果

#4


SELECT a.ID,b.min_time,a.max_time,SUM(b.[no]) AS [no] FROM A INNER JOIN B ON a.ID=b.ID AND a.min_time<b.max_time AND b.min_time<a.max_time GROUP BY a.ID,b.min_time,a.max_time

#5


该回复于2016-05-23 13:15:09被管理员删除

#6


引用 4 楼 roy_88 的回复:
SELECT a.ID,b.min_time,a.max_time,SUM(b.[no]) AS [no] FROM A INNER JOIN B ON a.ID=b.ID AND a.min_time<b.max_time AND b.min_time<a.max_time GROUP BY a.ID,b.min_time,a.max_time


日期比较应该加上 “=”

#7


引用 6 楼 welcome5 的回复:
Quote: 引用 4 楼 roy_88 的回复:

SELECT a.ID,b.min_time,a.max_time,SUM(b.[no]) AS [no] FROM A INNER JOIN B ON a.ID=b.ID AND a.min_time<b.max_time AND b.min_time<a.max_time GROUP BY a.ID,b.min_time,a.max_time


日期比较应该加上 “=”


这是日期范围交集的用法,你没看懂

#8


引用 7 楼 roy_88 的回复:
Quote: 引用 6 楼 welcome5 的回复:

Quote: 引用 4 楼 roy_88 的回复:

SELECT a.ID,b.min_time,a.max_time,SUM(b.[no]) AS [no] FROM A INNER JOIN B ON a.ID=b.ID AND a.min_time<b.max_time AND b.min_time<a.max_time GROUP BY a.ID,b.min_time,a.max_time


日期比较应该加上 “=”


这是日期范围交集的用法,你没看懂

学习中