sql内部加入多对多关系

Gia*_*dis -2 sql join

我有一个表用户(用户 ID、用户名、密码等)、一个表课程(课程 ID、课程名称等)和一个表 student_favouriteCourses(用户 ID、课程 ID)//两者都作为主键

如果我知道用户的 ID,我想搜索他最喜欢的所有课程。你能帮我查询加入吗?

Dav*_*ker 7

也许是这样的:

SELECT * FROM student_FavouriteCourse fav JOIN student stu ON ( fav.user_id = stu.user_id) JOIN courses crs ON ( fav.course_id = crs.course_id) WHERE fav.user_id = <yourvalue>

作为解释:

1)这将返回您想要的 student_FavouriteCourse(使用“fav”作为别名)记录

SELECT * FROM student_FavouriteCourse fav WHERE fav.user_id = <yourvalue>

2)你然后JOIN是学生的详细信息(使用“stu”作为别名)

JOIN student stu ON ( fav.user_id = stu.user_id)

3)你然后JOIN是课程详细信息(使用“crs”作为别名)

JOIN courses crs ON ( fav.course_id = crs.course_id)

我可以建议,如果您是 JOIN 和 SQL 的新手,您可以在上述每个步骤中运行此查询,然后您将看到连接如何工作以及如何构建结果数据集。

编辑:再次阅读您的帖子,我发现您实际上不需要学生加入,只需要课程。所以:

SELECT * FROM student_FavouriteCourse fav JOIN courses crs ON ( fav.course_id = crs.course_id) WHERE fav.user_id = <yourvalue>