我试图在一个视图中连接3个表;情况如下:

我有一张表格,里面有申请住在这所大学校园的学生的信息.我还有一张表列出了每个学生的大厅偏好(其中3个).但这些首选项中的每一个都只是一个ID号,ID号在第三个表中有一个对应的大厅名称(没有设计这个数据库…).

基本上,我有INNER JOIN个关于他们的偏好和他们的信息,结果是...

 John Doe | 923423 | Incoming Student | 005

005就是HallID.现在我想把HallID和第三个表匹配,这个表包含HallIDHallName.

所以我希望我的结果是...

 John Doe | 923423 | Incoming Student | Foley Hall <---(INSTEAD OF 005)

以下是我目前拥有的:

SELECT
  s.StudentID, s.FName, 
  s.LName, s.Gender, s.BirthDate, s.Email, 
  r.HallPref1, r.HallPref2, r.HallPref3
FROM
  dbo.StudentSignUp AS s 
  INNER JOIN RoomSignUp.dbo.Incoming_Applications_Current AS r 
    ON s.StudentID = r.StudentID 
  INNER JOIN HallData.dbo.Halls AS h 
    ON r.HallPref1 = h.HallID

推荐答案

您可以执行以下操作(我猜是在表字段上,等等)

SELECT s.studentname
    , s.studentid
    , s.studentdesc
    , h.hallname
FROM students s
INNER JOIN hallprefs hp
    on s.studentid = hp.studentid
INNER JOIN halls h
    on hp.hallid = h.hallid

根据你对多个大厅的要求,你可以这样做.您只需 for each 房间的pref id在大厅桌子上加入多次:

SELECT     s.StudentID
    , s.FName
    , s.LName
    , s.Gender
    , s.BirthDate
    , s.Email
    , r.HallPref1
    , h1.hallName as Pref1HallName
    , r.HallPref2 
    , h2.hallName as Pref2HallName
    , r.HallPref3
    , h3.hallName as Pref3HallName
FROM  dbo.StudentSignUp AS s 
INNER JOIN RoomSignUp.dbo.Incoming_Applications_Current AS r 
    ON s.StudentID = r.StudentID 
INNER JOIN HallData.dbo.Halls AS h1 
    ON r.HallPref1 = h1.HallID
INNER JOIN HallData.dbo.Halls AS h2
    ON r.HallPref2 = h2.HallID
INNER JOIN HallData.dbo.Halls AS h3
    ON r.HallPref3 = h3.HallID

Sql相关问答推荐

有没有办法在每次计算每一行的数据时更新2个值?

没有循环的SQL更新多个XML node 值

将重复的值更新为下一个空闲数字

Access中执行INSERT INTO查询时出现错误消息

SQL:如何在表中同时使用GROUPING和CONDITION?

如果多行科目有一行在指定的日期范围内,如何 Select 该科目在该日期之前的所有行?

将伪数据插入Postgres表

需要使用SQLite查询进行一些奇怪的时间转换

在SQL中转换差异表的多列

Netezza SQL:判断两个表是否相同

如何在 golang squirrel lib 中添加 postgreSQL 的distinct on

根据时间值提取记录

获取主表条目,其中最新的辅助条目是 6 个月前

从每月生成的系列中生成每日汇率

SQL for Smarties 类型问题:从表中 Select 记录,并对某些值进行分组

Django only() 和 values() 不适用于 prefetch_related()

SQLite 中的过滤运行总和视图

SQL 计数和过滤查询优化

包含多行的 SQL 查询

Postgres 窗口函数未按预期工作