业务是这样的,一个人可以选择要去哪些地方上课,同时,他还要选择自己要上哪些课。 然后我要查询的内容:1.查看某些课程(可能同时查两样课程)有哪些老师在上(比如我要查询上英语和语文的老师有哪些)。2.按地区查找上课的老师(比如我要查询在成都和重庆上课的老师有哪些)3.综合1和2的查询,既,要查询在四川和重庆有哪些老师在上英语和语文课。
userinfo(id,username) 存放用户信息
usersubs(userid,subs) 存放用户的选课信息(一个用户可以选择多门课程)
userarea(userid,area) 存放用户的地区信息(一个用户可以选择多个地区)
其中usersubs和userarea的userid列是参考userinfo#id,可以理解为外键。
测试数据如下insert into
user_area` values (1,'0000001'),(1,'1000002'),(1,'2000001'),(2,'0000002'),(2,'1000001');
insert into user_info
values (1,'u1'),(2,'u2'),(3,'u3');
insert into user_subjects
values (1,'0001'),(1,'1002'),(2,'0001'),(2,'1002'); `
查询语句
`SELECT u.* FROM user_info u WHERE u.userid IN(SELECT a.userid FROM user_area a, user_subjects s WHERE a.userid=s.userid AND (a.area LIKE '00%')
AND (s.subject LIKE '10%' OR s.subject LIKE '20%'))`
问题:
如上的查询语句是否可优化,或者数据库设计是否能优化。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。