【问题标题】:How to create a query to get all records from one table and fill in field information from a second table with a where statement?如何创建查询以从一个表中获取所有记录并使用 where 语句从第二个表中填写字段信息?
【发布时间】:2011-05-20 05:28:43
【问题描述】:

我有两张桌子。一个称为 prem 并包含系统中存在的所有 id,而 JimsQueryByColl 则包含大多数这些 id 以及附加的各种信息。我正在尝试创建一个查询,其中将包含 prem 中的所有 id,以及 JimsQueryByColl 中的所有记录,其中 JimsQueryByColl.Collector = "Frederick Road"。我当前的查询如下,但只给出了信息的后半部分(没有来自 prem 的 id,这些 id 没有出现在收集器列中 Frederick Road 的 id 列表中):

选择 Prem.meter_miu_id, JimsQueryByColl.*, Prem.longitude, Prem.latitude
从 Prem 左加入 JimsQueryByColl ON Prem.meter_miu_id = JimsQueryByColl.[MIU ID]
在哪里 (((JimsQueryByColl.Collector)="弗雷德里克 路"))

通常,Left Join 会实现我想要的,但 where 语句使除了 *Prem.meter_miu_id* 字段之外的所有内容都具有空白信息的 id 不包括在内。我试图在 WHERE 语句中添加“or JimsQueryByColl.Collector IS NULL”,但没有得到正确的结果。

我目前用于获取正确信息的两种查询方法名为 FredrickRoad 和 Query3:

弗雷德里克路-

选择 JimsQueryByColl.* FROM JimsQueryByCol 在哪里 (((JimsQueryByColl.Collector)="弗雷德里克 路"))

随后是 Query3 -

选择 Prem.meter_miu_id, JimsQueryByColl.*, Prem.longitude, Prem.latitude FROM Prem LEFT JOIN JimsQueryByColl ON Prem.meter_miu_id = JimsQueryByColl.[MIU ID] WHERE (((JimsQueryByColl.Collector)="弗雷德里克 路"));

但如果可能的话,我想一步一步完成。我希望我已经写清楚了,如果有人需要澄清,请询问。

当前解决方案

选择 Prem.meter_miu_id, JimsQueryByColl.*, Prem.longitude, Prem.latitude
进入弗雷德里克路 从 Prem 左加入 JimsQueryByColl ON (Prem.meter_miu_id = JimsQueryByColl.[MIU ID]
AND JimsQueryByColl.Collector="弗雷德里克
路”)

这解决了我在查询中遇到的奇怪错误/错误,因为它将查询放入表中并且不再直接处理查询。但是,我很想知道是什么导致了我遇到的问题。

【问题讨论】:

    标签: sql ms-access-2007


    【解决方案1】:

    试试:

    SELECT Prem.meter_miu_id, JimsQueryByColl.*, Prem.longitude, Prem.latitude
    FROM Prem LEFT JOIN JimsQueryByColl 
    ON (Prem.meter_miu_id = JimsQueryByColl.[MIU ID] 
    AND JimsQueryByColl.Collector="Frederick Road")
    

    【讨论】:

    • 这对我不起作用,似乎 Access 2007 不支持 join 语句中的 AND
    • 让它工作。我所要做的就是用括号括起来“Prem.meter_miu_id = JimsQueryByColl.[MIU ID] AND JimsQueryByColl.Collector="Frederick Road""。感谢您的帮助。
    • 实际上,这种方法可行,但有些不行。我可以欺骗 Access 这样做一次,但是当我尝试关闭它并再次运行它时,它仍然给我“不支持连接表达式”错误并且根本不会打开查询。知道如何在 Access 中完成这项工作吗?
    • 通过像您展示的那样在 On 语句周围加上括号,但是当我关闭 Access 并重新打开它并尝试打开查询时,即使在设计视图中,它也会给我这个错误。即使我第一次输入 sql 时可以让它运行,如果我尝试按 Prem.meter_miu_id 对结果进行排序,它也会给我这个错误。我无法回答它如何给我正确的结果,然后告诉我不支持 join 语句。这对我来说没有意义。
    • 你能说出你正在尝试的确切声明吗 - 你刚刚提到你添加了一个“order by”声明。没有理由“完全”相同的查询会在一秒钟内起作用,而在下一秒不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多