sql优化搜索很多

时间:2010-01-13 09:23:32

标签: sql mysql database hibernate

usertable
----
id, username

grouptable
----
id, groupname

group_user
--------
uid, gid

books
----
id, groupname

输入参数:groupname,username
输出:书籍清单

当用户名在groupname

中时,是否可以使用1 sql语句获取书籍列表

问题2:任何推荐掌握复杂sql语句的好书..

1 个答案:

答案 0 :(得分:1)

此查询按用户参数列出了书籍

SELECT b.id,
FROM usertable u
     INNER JOIN group_user gu ON gu.uid = u.id
     INNER JOIN grouptable g ON g.id= gu.gid
     INNER JOIN books b ON b.groupname = g.groupname 
WHERE u.username = @user_name

此外,我认为如果你有团体名称,你可以使用

SELECT b.id,
FROM grouptable g 
     INNER JOIN books b ON b.groupname = g.groupname 
WHERE g.groupname = @group_name

总线选择了这两个参数我觉得不是很好思考。这个查询将得到 用户组名称的书籍列表

SELECT b.id,
    FROM usertable u
         INNER JOIN group_user gu ON gu.uid = u.id
         INNER JOIN grouptable g ON g.id= gu.gid
              AND g.group_name = @group_name
         INNER JOIN books b ON b.groupname = g.groupname 
    WHERE u.username = @user_name