gpt4 book ai didi

mysql - 硬 SQL 查询 - 在另一个表中没有匹配的行或具有未在另一个表中发布的项目

转载 作者:行者123 更新时间:2023-11-30 23:11:22 28 4
gpt4 key购买 nike

下面是我要执行的 SQL。我想避免为此执行多个请求,我很确定这是可能的……

First table : products_categories (category_id, category_infos…)
Second table : products_categories_relations (product_id, category_id)
Third table : products (product_id, published, products_infos…)

我想查找所有空类别(其中没有产品)和仅包含未发布产品的类别。第二部分是我卡住的地方。

SELECT pc.`category_id`
FROM `#__products_categories` AS pc
LEFT JOIN `#__products_categories_relations` pcr
ON pc.`category_id` = pcr.`category_id`
WHERE pcr.`category_id` IS NULL

此查询为我提供了没有产品的类别,但我看不到如何插入条件说:

"for each category with products, return the ones which contain ONLY products where published=0"

我的分析是:
如果 A 是查询“没有产品的类别”的结果
B是“只有未发布产品的类别”的结果
我需要 A 或 B 中的类别。

最佳答案

SELECT pc.`category_id`
FROM `#__products_categories` AS pc
LEFT JOIN `#__products_categories_relations` pcr
ON pc.`category_id` = pcr.`category_id`
LEFT JOIN (SELECT product_id, MAX(published) published
FROM products
GROUP BY product_id
HAVING published = 0) p
ON pcr.product_id = p.product_id
WHERE pcr.`category_id` IS NULL OR p.product_id IS NOT NULL

子查询查找所有未发布的产品。我们加入它,然后 WHERE 子句可以将不存在的产品与第一个测试匹配,或者将未发布的产品与第二个测试匹配。

关于mysql - 硬 SQL 查询 - 在另一个表中没有匹配的行或具有未在另一个表中发布的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19586961/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com