-3

如何在sql中映射表?

我有三张桌子。我想使用 sql 查询映射这些表。

学生'table1'

Studnt_id   password
123         5525
124         2233

student_info '表 2'

Studnt_id   student_name    subject marks
123              gautam     maths     90
124              gaurav     maths     85

student_personal_info '表 3'

firstname   lastname    address
gautam      jethva          banglore, karnataka
gaurav      rathod          jamnagar , gujarat

我想映射这三个表并在结果中显示 id、student_name、lastname、subject、marks、address

4

1 回答 1

0

您需要将连接(映射)在一起;Jeff Atwood 在他的文章“ SQL 连接的可视化解释”中对这些工作原理进行了很好的概述

在上面的示例中,您应该能够使用 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

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

于 2013-06-10T09:11:52.230 回答