连表查询, 三个表,一个用户表(user ),一个 浏览历史表(browse_history),一个用户收藏表(user_collect)。
浏览历史表、用户收藏表,都与用户表关联,里面 都有字段userid ,
要求: 连表查询,根据 用户id,查询用户信息,和该用户的,浏览历史数量, 和 收藏数量。注意:就算该用户没有 浏览历史和 收藏。也要查询出用户表的基本信息。
用户表1:
id username
01 机构1
02 机构2
03 机构2-1
浏览历史表:
id productid userid datetime
1 3 01
2 4 01
3 6 02
4 3 02
用户收藏表:
id productid userid datetime
1 6 01
3 3 02
SELECT u.*, u.username,bh.datetime,COUNT(bh.id) AS BHSum,uc.datetime,COUNT(uc.id) AS UCSum
from user u
left join browse_history bh on u.id=bh.userid
left join user_collect uc on u.id=uc.userid
WHERE u.id='01'
根据userid 01,查询出来的结果,用户 浏览历史数量, 和 收藏数量,都为2, 。用户收藏数量错了,应该为1.请问,大神们怎么改 sql 语句。
思路:先将历史表和收藏表按用户分组,然后再去连表.查询可能不对,思路应该是对的.