一个是四个相互联系的表:用户表:表名: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.   


    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;
      

  2.   


    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;
      

  3.   

    分段查询:
    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')
    当然你要选择你需要的字段,我能想到就这个,希望有高手简化下.
      

  4.   

    表弄错了,现在重新修改了,再帮我看看一个是四个相互联系的表:用户表:表名: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  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              语文                李老师
    这样的数据库如何查询啊,都给我弄迷糊了
      

  5.   

    好友信息:
    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'
      

  6.   


    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;
      

  7.   


    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
      

  8.   

    用这个,上面丢了个条件select 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=f.Uid and f.Uid=c.Uid and c.CourseID=cn.id and cn.TeacherID=t.id