gpt4 book ai didi

mysql - 如何识别由不同属性定义的数据集中的唯一项目?

转载 作者:行者123 更新时间:2023-11-29 16:31:17 24 4
gpt4 key购买 nike

我有以下项目数据集

项目:

item
i1
i2
i3
i4

属性

item | attribute | attr_group
i1 green color
i2 red color
i1 fancy style
i2 cool style
i4 purple color
i3 red color
i1 REF1 refid
i2 REF2 refid
i3 REF2 refid
i4 REF1 refid

属性组名称

attr | group
a1 color
a2 style
a3 refid

文章:

article_id | title ..
ref1_1
ref1_2
ref2

现在我想用 article_id 标识的唯一项目填充表文章。唯一项被定义为具有 refid 的项,该项要么没有属性,要么具有不止一种不同的颜色。

例如有两个项目带有 ref1(绿色和紫色)​​,因此 ref1 本身不能是唯一的,但会有 2 个article_ids:ref1_1 和 ref1_2。

具有ref2的项目颜色相同,因此只需定义一个article_id。

一个可能的 MySQL 查询如何选择唯一的项目并将它们插入到表项目中?我无法理解这个问题,非常感谢任何帮助。

我的最佳尝试类似于以下 SQL 查询,但它只会根据 ref_id 和颜色定义文章,缺少的是具有相同颜色的项目。

/* create unique articles */
INSERT
IGNORE INTO articles (article_id, URL, ref_id, cat_id, dial_id)
SELECT CONCAT ( a.value, '-', a2.value) AS article_id,
CONCAT ( cs.name_safe, '-', LOWER(ca.attr_de), '-r', a.value) AS URL,
a.value AS refid,
cs.ID,
a2.value AS color_id
FROM `classifieds_attr` a
INNER JOIN classifieds c ON c.ID = a.cl_id
INNER JOIN cat_names_sub cs ON c.cat_id = cs.ID
INNER JOIN `classifieds_attr` a2 ON c.ID = a2.cl_id
AND a2.attr_group_id = 9
INNER JOIN cat_attr ca ON a2.value = ca.attr_id
WHERE a.attr_group_id = 8
AND cs.cat_main_id = 15
AND a2.value NOT LIKE 'Invalid:%'
GROUP BY refid,color_id

最佳答案

获得元素并不难:

SELECT a.item
FROM attributes a
GROUP BY a.item
HAVING sum(attr_group = 'refid') > 0 AND
(sum(attr_group = 'refid') = count(*) OR -- only a refid
min(CASE WHEN attr_group = 'color' THEN attribute END) <>
max(CASE WHEN attr_gruop = 'color' THEN attribute END)
);

我不确定如何将这些变成“文章”,但这可能就是您所需要的。

关于mysql - 如何识别由不同属性定义的数据集中的唯一项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53860525/

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