我正在寻找一个我在互联网上找不到的SQL请求(我自己也没有找到解决方案)。
我有两个不同的表用户和历史记录,以及一个连接这两个表的表user_history。
例如:
用户
id name
1 John
2 Edie
3 France
4 Gabriel5爱伦
历史
id date_entered type
1 2017-07-01 36
2 2017-07-02 52
3 2017-07-03 25
4 2017-07-04 69
5 2017-07-05 85
6 2017-07-06 74
7 2017-07-07 45
8 2017-07-08 85
9 2017-07-09 25
10 2017-07-10 78USER_HISTORY
id id_user id_history
1 1 1
2 1 2
3 1 3
4 1 4
5 2 5
6 2 6
7 1 7
8 1 8
9 2 9
10 1 10在本例中,所有历史记录由用户1和2创建(用户2具有历史记录5、6和9)。
所以问题是:
是什么SQL请求让我看到历史上所有用户的历史类型为25,而在几天后,他们的历史类型为85?
在本例中,只有用户1 (John)是可以的,因为他在2017-07-03的历史类型为25,在2017-07-08的历史类型为85。用户2 (Edie)是不好的,因为即使他有25和85的历史,第一个是85和25。
明白了吗?你能帮帮我吗?
发布于 2017-07-25 14:25:18
您需要使用JOIN表两次使用HISTORY表,例如:
SELECT h1.id_user
FROM (
SELECT u.id_user, h.date_entered
FROM user_history u
JOIN history h ON u.id_history = h.id
WHERE h.type = 25) h1
JOIN (
SELECT u.id_user, h.date_entered
FROM user_history u
JOIN history h ON u.id_history = h.id
WHERE h.type = 85
) h2 ON h1.id_user = h2.id_user
WHERE h1.date_entered < h2.date_entered;这是SQL Fiddle。
https://stackoverflow.com/questions/45306019
复制相似问题