【问题标题】:Question using LEFT or INNER JOIN and WHERE in SQL ACCESS在 SQL ACCESS 中使用 LEFT 或 INNER JOIN 和 WHERE 的问题
【发布时间】: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 上为空的结果,所以我将有一个列表框,用户可以在其中更改和输入新值。但我不知道该怎么做,我是一个初学者。

感谢您的帮助

【问题讨论】:

    标签: mysql sql vba join where-clause


    【解决方案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 的支持。您是否错误地回答了问题,并且您真的使用了一些迟钝的数据库?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 2013-05-02
    • 1970-01-01
    • 2012-12-04
    • 2012-08-17
    • 2017-12-07
    • 2012-02-28
    相关资源
    最近更新 更多