在 SQL ACCESS 中使用 LEFT 或 INNER JOIN 和 WHERE 的问题

Posted

技术标签:

【中文标题】在 SQL ACCESS 中使用 LEFT 或 INNER JOIN 和 WHERE 的问题【英文标题】:Question using LEFT or INNER JOIN and WHERE in SQL ACCESS 【发布时间】:2020-12-03 21:25:21 【问题描述】:

喂?

我在 MS Access 中有这个查询:

SELECT 
    tbl_produtos.NomeProduto,
    tbl_produtos.PrecoVenda,
    tbl_precos_especiais.PrecoVenda
FROM
    tbl_produtos
        LEFT JOIN
    tbl_precos_especiais ON tbl_precos_especiais.ID_Produto = tbl_produtos.ID_Produto;

结果是这样的

但是在tbl_precos_especiais上,我有一个叫ID_CliFor的字段,我想在QUERY上放一个WHERE来过滤这个字段的结果:

SELECT 
    tbl_produtos.NomeProduto,
    tbl_produtos.PrecoVenda,
    tbl_precos_especiais.PrecoVenda
FROM
    tbl_produtos
        LEFT JOIN
    tbl_precos_especiais ON tbl_precos_especiais.ID_Produto = tbl_produtos.ID_Produto
WHERE
    tbl_precos_especiais.ID_CliFor = 268;

结果是这样的

事情是我想从 tbl_produtos 带来所有结果,那些在 tbl_precos_especiais 上为空的结果,所以我将有一个列表框,用户可以在其中更改和输入新值。但我不知道该怎么做,我是一个初学者。

感谢您的帮助

【问题讨论】:

【参考方案1】:

将条件移至on 子句:

SELECT p.NomeProduto, p.PrecoVenda, pe.PrecoVenda
FROM tbl_produtos p LEFT JOIN
     tbl_precos_especiais pe
     ON pe.ID_Produto = p.ID_Produto AND pe.ID_CliFor = 268;

【讨论】:

您好,感谢您的回答。我收到“不支持连接表达式”错误,它突出显示了这部分:“pe.ID_CliFor = 268” @FabioGomes 。 . .这个结构是标准的 SQL,当然也得到 mysql 的支持。您是否错误地回答了问题,并且您真的使用了一些迟钝的数据库?

以上是关于在 SQL ACCESS 中使用 LEFT 或 INNER JOIN 和 WHERE 的问题的主要内容,如果未能解决你的问题,请参考以下文章

access中left join和limit联合分页查询怎么写sql语句?

MS Access - SQL LEFT JOIN 多个条件

MS Access INNER JOIN/LEFT JOIN 问题

需要在 SQL 中调试 Left Join

在Access VBA中使用的Excel应用程序属性

使用 ODBC 连接时如何在 MS Access 或 SQL Server 中使用日期数据类型