Sql server 如何从2个字段连接到另一个表上的1个字段
在sqlServer上,我有两个表:Sql server 如何从2个字段连接到另一个表上的1个字段,sql-server,Sql Server,在sqlServer上,我有两个表: table1: Students => studentName=david, class1Id=2,class2Id=4 table2: classes=> classId=2, className="class1" classId=4, className="class2" classId和class2Id与类相关。classId 我要执行sql查询以获取: studentName=david, className1="c
table1: Students => studentName=david, class1Id=2,class2Id=4
table2: classes=> classId=2, className="class1"
classId=4, className="class2"
classId
和class2Id
与类相关。classId
我要执行sql查询以获取:
studentName=david, className1="class1",className2="class2",
我知道在两个表之间进行连接,但不是这样
谢谢 您只需将
加入类两次:
Select S.StudentName,
C1.ClassName As ClassName1,
C2.ClassName As ClassName2
From Students S
Join Classes C1 On C1.ClassId = S.Class1Id
Join Classes C2 On C2.ClassId = S.Class2Id
这个问题的根源是桌子的设计有缺陷。这就是所谓的重复组。它违反1NF,应不惜一切代价避免。考虑到当你需要允许每个学生第三个班级时,这个设计变得多么糟糕。您必须更改表并更改查找此信息的单个查询。学生和班级之间的关系应该是多对多的关系。要正确处理这个问题,需要为StudentID和ClassID创建一个桥接表。你的教授在这里给了你一个失败的机会。他们想让你质疑一个糟糕的设计。他们真可耻!!