如何在sql中映射表?
我有三张桌子。我想使用SQL查询映射这些表。学生'table1'
Studnt_id password
123 5525
124 2233
student_info'table 2'
Studnt_id student_name subject marks
123 gautam maths 90
124 gaurav maths 85
student_personal_info'table 3'
firstname lastname address
gautam jethva banglore, karnataka
gaurav rathod jamnagar , gujarat
我想映射这三个表并显示在结果id,student_name,lastname,subject,marks,address
答案 0 :(得分:0)
你需要JOIN(映射)表格; Jeff Atwood在他的文章“A Visual Explanation of SQL Joins”
中概述了这些是如何工作的在上面的示例中,您应该能够使用studn_id列将表student
('table1')和student_info
('table2')链接在一起。第三个可能比较棘手,因为它似乎没有保证密钥回到前两个表中的任何一个。
示例:
SELECT S.student_name, S.subject, S.marks
FROM student S
INNER JOIN student_info SI ON S.Studnt_id = SI.Studnt_id
将为student
中的所有行提供student_info
然而,链接第三个表student_personal_info
要困难得多。这里的问题是,似乎没有一种独特的方法可以为特定学生提取此表中的行 - 您可以尝试加入名称,但这不能保证是唯一的。
表student_personal_info确实应该在其中包含Studnt_id
列,以便为特定学生提供唯一的行选择。但是,根据您的具体示例,以下内容将起作用:
SELECT S.student_name, S.subject, S.marks, SPI.lastname, SPI.address
FROM student S
INNER JOIN student_info SI ON S.Studnt_id = SI.Studnt_id
INNER JOIN student_personal_info SPI ON SI.student_name = SPI.firstname
但是,如果多个学生共享相同的名字,您将获得多个匹配。