什么是sql中的映射?

时间:2013-06-10 09:06:34

标签: sql phpmyadmin

如何在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

1 个答案:

答案 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

但是,如果多个学生共享相同的名字,您将获得多个匹配。