【问题标题】:How do I do a JOIN in Access如何在 Access 中进行 JOIN
【发布时间】:2014-02-02 10:28:47
【问题描述】:

我有三个表,想按如下方式加入它们: 这些表格是客户、车辆和提醒。客户在 Customer_Id 上加入到车辆,车辆在 Vehicle_ID 上加入到提醒。我想显示来自客户和车辆的记录,这些记录要么在 MOT 字段为 Y 的提醒中有记录,要么在提醒中没有记录。 我的 SQL 是:

SELECT Customer.Title, Customer.[First Name], Customer.Initials, Customer.[Last Name],
 Vehicles.RegNo, Vehicles.Make, Vehicles.Model, Vehicles.MOT, Reminders.MOT, Reminders.MOT_date
FROM 
(Customer 
INNER JOIN Vehicles 
ON Customer.[Customer Id] = Vehicles.[Customer Id]) 
INNER JOIN Reminders 
ON Vehicles.[Vehicle ID] = Reminders.[Vehicle_ID]
WHERE Reminders.MOT <>"Y";

这不显示任何结果,但我有一条记录在所有三个中,在 Reminders.MOT 中值为空白,而在 Customer 和 Vehicles 中的一些记录在 Reminders 中没有记录。

【问题讨论】:

    标签: sql ms-access join


    【解决方案1】:

    试试这个查询。我假设r.MOTReminders 中不可为空。
    所以下面的r.MOT is null 表示提醒
    记录不存在。

        select distinct 
        c.Title, c.[First Name], c.Initials, c.[Last Name], 
        v.RegNo, v.Make, v.Model, v.MOT, r.MOT, r.MOT_date
        from
        (Customer c
        inner join Vehicles v on c.Customer_Id = v.Customer_Id)
        left join Reminders r on v.Vehicle_ID = r.Vehicle_ID
        where
        (r.MOT is null)
        or
        (r.MOT <> 'Y')
    

    【讨论】:

    • 您似乎有正确的想法,但 Access 不喜欢该查询有两个原因:(1) Access SQL 不支持不合格的 JOIN,所以您d 需要使用 INNER JOIN。 (2) 访问需要在其中一个 JOIN 周围加上括号,如问题中的查询所示。
    • 不确定括号应该放在哪里。你能把它们添加到正确的地方吗?
    • 感谢 Gord,但是当我运行此查询时,它要求提供 c.customer_id、v.customer_id 和 r.vehicle_id。我想在没有任何输入的情况下运行它
    猜你喜欢
    • 2016-05-15
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 2021-09-06
    • 2021-06-30
    相关资源
    最近更新 更多