Mysql 用连接表连接多对多
好吧,现在我不知道下一步该怎么办。我刚刚开始学习mySQL中的连接,我正在尝试通过它的连接表Mysql 用连接表连接多对多,mysql,sql,join,left-join,inner-join,Mysql,Sql,Join,Left Join,Inner Join,好吧,现在我不知道下一步该怎么办。我刚刚开始学习mySQL中的连接,我正在尝试通过它的连接表(多对多)关系连接两个表。但是我下面的例子没有提到任何关于多对多表的内容 我有三张桌子 1.)课程 2.)课程科目——连接表 id PK curriculumId FK subjectCode FK 3)主题 课程 id PK name description yearLevel syStart syEnd 课程科目--连接表 id PK curriculumId FK subjectCode FK
(多对多)
关系连接两个表。但是我下面的例子没有提到任何关于多对多
表的内容
我有三张桌子
1.)课程
2.)课程科目——连接表
id PK
curriculumId FK
subjectCode FK
3)主题
课程
id PK
name
description
yearLevel
syStart
syEnd
课程科目--连接表
id PK
curriculumId FK
subjectCode FK
主题
code PK
name
yrLevel
description
所需结果是在过程调用中显示科目代码,科目名称,科目描述,科目年度级别(如果提供或提供了课程名称
和课程年度级别
)
这就是我所做的
CREATE PROCEDURE `getCurriculumSubjects` (IN p_CurcName varchar(50),IN p_yrLevel varchar(50))
BEGIN
SELECT `subject`.`code`,`subject`.`name`,`subject`.yrLevel, `subject`.description
FROM `subject`
LEFT OUTER JOIN curriculumsubjects
ON `subject`.`code` = curriculumsubjects.subjectCode
LEFT OUTER JOIN curriculum
ON curriculum.id = curriculumsubjects.curriculumId
WHERE curriculumsubjects.id = (SELECT id FROM curriculum WHERE `name` = p_CurcName AND yearLevel = p_yrLevel);
END
目前,课程
表上有一条记录,科目
表上有两条科目记录
课程表屏幕截图
code PK
name
yrLevel
description
主题表屏幕截图
code PK
name
yrLevel
description
课程主题表屏幕截图
code PK
name
yrLevel
description
但是当我运行脚本时,我什么也得不到
我的意思是,如何正确使用左连接来解决此问题?
我可以加入更多的表而不是2个表吗
我非常感谢你的帮助
提前感谢。我认为这达到了您的要求:
select s.code, s.name, s.description, s.yrLevel
from subject s
inner join curriculumsubject cs on s.code = cs.subjectCode
inner join curriculum c on cs.curriculumId = c.ID
where c.name = p_CurcName and c.yearLevel = p_yrLevel
我不认为左连接是合适的,除非你想返回主题的空值,当参数值存在于课程中,但没有指向主题的链接。如果只想在有匹配主题的地方返回行,则内部联接是正确的解决方案。可以联接任意数量的表将where
更改为和@草莓????抱歉,在何处/What调用存储过程时使用的参数是什么?问题是,CoursulumSubjects.id
永远不会匹配Coursuld.id
,结果将为空。有一次他们会在不吉利的情况下比赛,我们会被彻底击败需要课程主题。课程ID
真的。非常感谢您的帮助。正如我提到的,我刚刚开始学习连接,您的解决方案帮助我完全理解简单的连接或内部连接。所以我首先分析了连接对表1和表2的影响,然后是表3。这对我帮助很大。再次感谢。