我正在使用一个中等大小的 MSAccess .mdb 文件,我需要使用 SQL 来操作它。不幸的是,一些理论上有效的陈述似乎导致它挂起,我遇到了砖墙。
三个表:products、product_category 和 categories 我需要选择仅包含具有“HIDE = 1”字段的项目的类别 如果类别包含隐藏 = 0 的产品,则不应选择它。
我可以使用子查询相对轻松地做到这一点,但查询会停止。在过去,依赖左连接的查询似乎可以有效地执行,但我无法将我的思想围绕在连接上,足以将此查询转换为那种格式。
编辑:
SELECT c.categoryid
FROM product_category AS c
LEFT JOIN
(
SELECT DISTINCT c.categoryid
FROM product_category AS c
LEFT JOIN products AS p
ON c.catalogid = p.catalogid
WHERE p.hide = 0
) y ON y.categoryid = c.categoryid
WHERE y.categoryid IS NULL
有人发布了上述查询作为答案,但由于某种原因将其删除。据我所知,它可以工作并且工作得很快。我认为这个问题可以回答。如果我记得,一旦计时器允许,我会自行发布答案。