我很难理解如何加入表格,对不起我的问题= D
好的。我有两个表:users
和user_traning
。
user_traning
使用以下列添加用户培训:
id, user_id, date, type, notes
等
users
表使用上次登录日期时间更新user_last_login
行。
我的想法是在user_training
的帮助下users.user_last_login
计算user_traning.date
中有多少(新)行。{/ 1>
我一直在尝试这样:
SELECT COUNT(*) FROM user_traning
JOIN users
on users.user_id = user_traning.user_id
WHERE users.user_id = '2' and user_traning.user_id ='2' between
users.user_last_login and now()
所以我可以在页面上显示一个小徽章,自上次访问以来已添加了多少个新会话=)
非常感谢帮助!
答案 0 :(得分:0)
你在那里是alomost但最后你有一个小的语法问题,它应该是
SELECT COUNT(*) FROM user_traning ut
JOIN users u
on u.user_id = ut.user_id
WHERE u.user_id = '2'
and ut.user_id ='2'
and ut.date between u.user_last_login and now()
更新:根据评论中提供的解释。
考虑以下2个表
mysql> select * from user_training ;
+------+---------+---------------------+
| id | user_id | date |
+------+---------+---------------------+
| 1 | 1 | 2015-04-14 16:35:01 |
| 2 | 1 | 2015-04-14 16:35:10 |
| 3 | 3 | 2015-04-14 16:35:18 |
| 4 | 4 | 2015-04-14 16:35:25 |
| 5 | 2 | 2015-04-13 16:37:16 |
| 6 | 2 | 2015-04-14 15:57:26 |
| 7 | 3 | 2015-04-14 15:27:38 |
+------+---------+---------------------+
7 rows in set (0.00 sec)
mysql> select * from users ;
+---------+------+---------------------+
| user_id | name | user_last_login |
+---------+------+---------------------+
| 1 | AA | 2015-04-14 16:34:10 |
| 2 | BB | 2015-04-14 16:34:10 |
+---------+------+---------------------+
从上面的示例数据中,user_training
表中有4个条目,该条目在上次登录user_id = 2
后发生
现在我们可以将这些数据作为
select * from user_training ut
left join users u on u.user_id = ut.user_id
join (
select user_id,user_last_login from users where user_id = 2
)x on ut.date >= x.user_last_login ;
这会给你
+------+---------+---------------------+---------+------+---------------------+---------+---------------------+
| id | user_id | date | user_id | name | user_last_login | user_id | user_last_login |
+------+---------+---------------------+---------+------+---------------------+---------+---------------------+
| 1 | 1 | 2015-04-14 16:35:01 | 1 | AA | 2015-04-14 16:34:10 | 2 | 2015-04-14 16:34:10 |
| 2 | 1 | 2015-04-14 16:35:10 | 1 | AA | 2015-04-14 16:34:10 | 2 | 2015-04-14 16:34:10 |
| 3 | 3 | 2015-04-14 16:35:18 | NULL | NULL | NULL | 2 | 2015-04-14 16:34:10 |
| 4 | 4 | 2015-04-14 16:35:25 | NULL | NULL | NULL | 2 | 2015-04-14 16:34:10 |
+------+---------+---------------------+---------+------+---------------------+---------+---------------------+
为了获得计数,我们可以在查询中使用count
select count(*) from user_training ut
left join users u on u.user_id = ut.user_id
join (
select user_id,user_last_login from users where user_id = 2
)x on ut.date >= x.user_last_login