【问题标题】:Join with Multiple Tables加入多个表
【发布时间】:2018-04-29 09:59:39
【问题描述】:

我遇到以下问题的语法错误,似乎无法弄清楚,希望你们能帮助我!

我有这些表(已填充):

我正在尝试检索在某个航班号中安排的所有乘客的名字和姓氏,所以我得到的是:

SELECT PassFName, PassLName
FROM Passenger
INNER JOIN PassID ON Passenger.PassID = Reservation.PassID
INNER JOIN FlightNum ON FlightNum.Reservation = FlightNum.ScheduledFlight
WHERE ScheduledFlight.FlightNum = [Enter Flight Number];

但是,我收到错误:

不知道为什么,我还在最后一行注意到它拼写错误 FlightNum.ScheduledFlight。知道我做错了什么吗?

谢谢!

【问题讨论】:

    标签: sql ms-access left-join inner-join right-join


    【解决方案1】:

    Gordon 的观点是正确的,但他的括号放错了位置,错过了其他大问题。这个查询不仅仅是一点点重击,表名和字段名被翻转了。这就是我猜想的工作......

    SELECT
           PassFName
         , PassLName
    FROM (
         Passenger
         INNER JOIN Reservation
            ON Passenger.PassID = Reservation.PassID
         )
    INNER JOIN ScheduledFlight
        ON Reservation.FlightNum = ScheduledFlight.FlightNum
    WHERE
         ScheduledFlight.FlightNum = [Enter Flight Number];
    

    【讨论】:

      【解决方案2】:

      MS Access 有一种奇怪的连接语法。它需要在每个 JOIN 对周围加上括号。所以:

      SELECT PassFName, PassLName
      FROM (Passenger INNER JOIN
            Reservation
           ) ON Passenger.PassID = Reservation.PassID INNER JOIN
           FlightNum
           ON FlightNum.Reservation = FlightNum.ScheduledFlight
      WHERE ScheduledFlight.FlightNum = [Enter Flight Number];
      

      虽然其他数据库支持这种语法,但只有在 MS Access 中才需要。

      【讨论】:

      • 我真的不知道如何以良好的格式回复以便它可以阅读,但这是我使用该语法得到的新错误:i.stack.imgur.com/R8Hzx.jpg
      • @SPedraza 。 . .据推测,您希望 Reservation 作为第二张表,而不是 PassId
      • 您的意思是将保留作为第一个 INNER JOIN 吗?为什么会这样?
      • @SPedraza 。 . .在您的代码示例中没有名为 PassId 的表。
      • PassID 是乘客和预订表中的 PK。我需要它来获取名字和姓氏并将其连接到 ScheduledFlight 表。预订是一个查找表。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 2017-06-18
      • 2012-05-30
      • 2017-07-10
      • 2019-02-03
      相关资源
      最近更新 更多