一个是四个相互联系的表:用户表:表名:userUid name gold
1 小王 20
2 小李 20
3 小赵 20
4 小于 20这个表就不多解释了,就是用户ID和用户名。好友表 表名:FriendsFid Uid FriendsID
1 1 3
1 1 2
1 3 2
1 2 4
1 4 1好友表,Uid是用户ID FriendsID是好友ID,两个都是和用户表中的Uid关联。课程表 表名:CourseCid CourseID TeacherID Uid
1 1 2 1
2 1 1 2
3 2 2 3 课程表中CourseID是课程名称表中的ID关联,TeacherID和教师表中的ID关联。Uid是用户ID课程名称表 表名:CourseName
ID CourseName
1 数学
2 语文
教师表:表名:TeacherName
ID TeacherName
1 王老师
2 李老师
这两个不用说明了吧
我想要的是用户好友的课程列表:查询用户ID的时候想要:Course.Cid,user.name,user.gold,CourseName.CourseName,TeacherName.TeacherName想要这些数据例如 用户ID为1的时候:
Course.Cid,user.name,user.gold,CourseName.CourseName,TeacherName.TeacherName
2 小李 20 数学 王老师
3 小赵 20 语文 李老师
这样的数据库如何查询啊,都给我弄迷糊了
1 小王 20
2 小李 20
3 小赵 20
4 小于 20这个表就不多解释了,就是用户ID和用户名。好友表 表名:FriendsFid Uid FriendsID
1 1 3
1 1 2
1 3 2
1 2 4
1 4 1好友表,Uid是用户ID FriendsID是好友ID,两个都是和用户表中的Uid关联。课程表 表名:CourseCid CourseID TeacherID Uid
1 1 2 1
2 1 1 2
3 2 2 3 课程表中CourseID是课程名称表中的ID关联,TeacherID和教师表中的ID关联。Uid是用户ID课程名称表 表名:CourseName
ID CourseName
1 数学
2 语文
教师表:表名:TeacherName
ID TeacherName
1 王老师
2 李老师
这两个不用说明了吧
我想要的是用户好友的课程列表:查询用户ID的时候想要:Course.Cid,user.name,user.gold,CourseName.CourseName,TeacherName.TeacherName想要这些数据例如 用户ID为1的时候:
Course.Cid,user.name,user.gold,CourseName.CourseName,TeacherName.TeacherName
2 小李 20 数学 王老师
3 小赵 20 语文 李老师
这样的数据库如何查询啊,都给我弄迷糊了
SELECT c.cid,u.name,u.gold,cn.coursename,tn.teachername
FROM course c,user u,coursename cn,teachername tn,friends f
WHERE c.teacherid=tn.id AND c.courseid=cn.id AND c.uid=f.uid AND f.uid=u.uid;
SELECT c.cid,u.name,u.gold,cn.coursename,tn.teachername
FROM course c,user u,coursename cn,teachername tn,friends f
WHERE c.teacherid=tn.id AND c.courseid=cn.id AND c.uid=f.uid
AND f.friendsid=u.uid and f.uid=1;
1.好友的姓名和gold
select * from user where Uid in(select FRriendsID from Friends where Uid='1')
2.好友的课程
select CourseName.CourseName,Course.Uid,Course.Cid from Course left join CourseName on CourseName.ID=Course.Cid where Course.Uid in(select FRriendsID from Friends where Uid='1')
3.好友的老师
select TeacherName.TeacherName,Course.Uid from Course left join TeacherName on TeacherName.ID=Course.Cid where Course.Uid in(select FRriendsID from Friends where Uid='1')
因此联系起来就是:
select * from((select * from user)c left join ((select * from Course left join CourseName on CourseName.ID=Course.Cid)a left join (select * from Course left join TeacherName on TeacherName.ID=Course.Cid)b on a.Cid=b.Cid)d on c.Uid=d.Uid) where c.Uid in(select FRriendsID from Friends where Uid='1')
当然你要选择你需要的字段,我能想到就这个,希望有高手简化下.
1 小王 20
2 小李 20
3 小赵 20
4 小于 20这个表就不多解释了,就是用户ID和用户名。好友表 表名:FriendsFid Uid FriendsID
1 1 3
1 1 2
1 3 2
1 2 4
1 4 1好友表,Uid是用户ID FriendsID是好友ID,两个都是和用户表中的Uid关联。课程表 表名:CourseCid CourseID Uid
1 1 1
2 1 2
3 2 3 课程表中CourseID是课程名称表中的ID关联,TeacherID和教师表中的ID关联。Uid是用户ID课程名称表 表名:CourseName
ID CourseName TeacherID
1 数学 1
2 语文 2
教师表:表名:TeacherName
ID TeacherName
1 王老师
2 李老师
这两个不用说明了吧
我想要的是用户好友的课程列表:查询用户ID的时候想要:Course.Cid,user.name,user.gold,CourseName.CourseName,TeacherName.TeacherName想要这些数据例如 用户ID为1的时候:
Course.Cid,user.name,user.gold,CourseName.CourseName,TeacherName.TeacherName
2 小李 20 数学 王老师
3 小赵 20 语文 李老师
这样的数据库如何查询啊,都给我弄迷糊了
select * from user as u,Friends as f where u.Uid=f.Uid
好友课程及老师:
select * from Course as c ,CurseName as cn,TeacherName as tn where c.CourseID=cn.ID and cn.ID=tn.ID
联系起来就是:
select * from((select * from user as u,Friends as f where u.Uid=f.Uid)a left join (select * from Course as c ,CurseName as cn,TeacherName as tn where c.CourseID=cn.ID and cn.ID=tn.ID)b on a.Uid=b.FriendsID) where a.Uid='1'
SELECT c.cid,u.name,u.gold,cn.coursename,tn.teachername
FROM course c,user u,coursename cn,teachername tn,friends f
WHERE cn.teacherid=tn.id AND c.courseid=cn.id AND c.uid=f.uid
AND f.friendsid=u.uid AND f.uid=1;
SELECT DISTINCT c.Cid, u.name, u.gold, cn.CourseName, t.TeacherName
FROM user u, friends f, course c, coursename cn, teachername t
WHERE u.Uid
IN (
SELECT f.FriendsID
FROM friends f, user u
WHERE f.Uid = u.Uid
AND u.Uid =1
)
AND u.Uid = c.Uid
AND c.CourseID = t.id
AND cn.TeacherID = t.id
FROM friends f, user u WHERE f.Uid = u.Uid AND u.Uid =1) and u.Uid=f.Uid and f.Uid=c.Uid and c.CourseID=cn.id and cn.TeacherID=t.id