gpt4 book ai didi

mysql - 选择条件(所有数据都有这个条件)Sql

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

抱歉,如果我要编辑,我有 4 个表,其中包含产品、product_to 类别、product_attribute 和 attribute_description。

每个表都有一个关系。

喜欢这个产品:

apple, category = 193
dell, category = 100
asus, category = 99

并且对于每个类别都有一个子类(apple mac all-in-one 100 (product id= ...), mac notebook 200 (product id = ....)

并且每个子产品都有一些属性。 (苹果 mac 一体机 100(vga、ram、dll))。

产品:

Product_id

Product_to_category:(与产品的关系)

product_id            category_id

Product_attribute : (与产品和attribute_description的关系)

product_id            attribute_id

属性_描述:

attribute_id            name(vga,ram,dll)

我尝试选择带大小写的所有属性(任何产品都具有此属性)。

示例:

产品apple-1有属性vga, ram, processor, brightness.

产品 apple-2 有属性 vga, ram, processor.

产品apple-3有属性memory, os ,processor,ram。

然后选择所有属性(任何产品都具有此属性)。答案是ramprocessor(因为,apple1-3 有这个属性)。

我所知道的是从类别 193(apple) 中按 1 选择所有属性,如下所示:

SELECT DISTINCT ad.name
FROM product_to_category AS ptc
INNER JOIN product AS p ON ptc.product_id = p.product_id
INNER JOIN product_attribute AS pa ON p.product_id = pa.product_id
INNER JOIN attribute_description AS ad ON pa.attribute_id = ad.attribute_id
WHERE ptc.category_id =193

但我想从类别 apple 中选择所有名称属性,其中(条件是任何产品 apple 具有此属性)它是指通用属性。

我想知道,归属所有苹果产品的所有权。

最佳答案

下面是一种使用 not exists 来选择与所有产品关联的属性的方法。

select * from attribute_desc ad
where not exists (
select 1 from product p
left join product_to_attribute pta on pta.product_id = p.product_id
and pta.attribute_id = ad.attribute_id
where pta.attribute_id is null
)

not existsleft join ... null 形成双重否定。换句话说,选择了没有缺失产品关联的属性。

另一种使用子查询来计算每个属性的不同产品数量的方法:

select attribute_id
from product_to_attribute
group by attribute_id
having count(distinct product_id) = (select count(*) from product)

关于mysql - 选择条件(所有数据都有这个条件)Sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36466599/

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