当前位置: 首页 > 知识库问答 >
问题:

SQL内部连接与3个表?

林魁
2023-03-14

我试图在一个视图中加入3个表;情况是这样的:

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

基本上,我在表上有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

共有2个答案

陈泰宁
2023-03-14
SELECT column_Name1,column_name2,......
  From tbl_name1,tbl_name2,tbl_name3
  where tbl_name1.column_name = tbl_name2.column_name 
  and tbl_name2.column_name = tbl_name3.column_name
束新
2023-03-14

您可以执行以下操作(我猜是关于表字段等)

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

根据你对多个大厅的要求,你可以这样做。您只需为每个房间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
 类似资料:
  • 问题内容: 我试图在一个视图中联接3个表;情况如下: 我有一张桌子,其中包含正在申请住在此大学校园的学生的信息。我还有另一个表格,列出了每个学生的“大厅偏好设置”(其中有3个)。但是这些首选项只是一个ID号,并且ID号在第三张表中有一个对应的Hall Name(不是设计此数据库…)。 差不多,我在桌子上看到了他们的偏好和他们的信息,结果是… 哪里会是。所以现在我想将其与第三个表匹配,该表包含一个和

  • 问题内容: 我想通过内部联接从更多表中选择数据。 这些是我的桌子。 我想写一份声明,显示学生去过哪个考试,年级和日期。日期后排序。 这是我的声明。它可以运行,但是我想确保自己做的正确。 问题答案: 几乎正确..查看联接,您引用的字段错误

  • 我使用Java(网豆软件)做一些项目,并链接到微软访问。 当我需要从Microsoft Access将三个表内部连接在一起时, 我没有问题将2个表内部连接在一起 我能得到结果。但不是3个表内连接。 对于上面的SQL,我有3个“A”表分别用于< code >用户| CPU |软件| 我得到的错误< code>java.sql.SQLException:在end SQL语句后找到字符 谢啦

  • 问题内容: 我在重构的旧系统中有以下SQL语句。这是此问题的缩写视图,只是暂时返回count(*)。 它会生成大量记录并杀死系统,但是有人可以解释其语法吗?可以用其他任何方式表达吗? 表1包含419行 表2包含3374行 Table3包含28182行 编辑: 建议重新格式化 问题答案: 为了提高可读性,我重新构造了查询…从表1的最顶层开始,然后将其绑定到Table3,然后将table3绑定到tab

  • 问题内容: 我有以下SQL: 在Oracle SQL Developer 4.0.0.13(连接到DB2数据库)中,我在以下斜体下面显示了 一条弯曲的 行:“ from pluspbillline ”和“ left external join workorder ”。 警告说:“ pluspbillline已与连接图的其余部分断开连接”。这是什么意思? 问题答案: 我不确定是什么原因导致Oracl

  • 问题内容: 我很难做到以下几点: 我想加入ValTbl,但仅适用于不同的值。 问题答案: 试试这个: 或这样做(它的作用相同,但语法不同):