首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何识别由不同属性定义的数据集中的唯一项?

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

Stack Overflow用户
提问于 2018-12-20 07:21:41
回答 1查看 58关注 0票数 0

我有以下项目的数据集

项目:

代码语言:javascript
复制
item
i1
i2
i3
i4

属性

代码语言:javascript
复制
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

属性组名称

代码语言:javascript
复制
attr | group
a1     color
a2     style
a3     refid

文章:

代码语言:javascript
复制
article_id | title ..
ref1_1
ref1_2
ref2

现在我想用由article_id标识的唯一项来填充表文章。唯一项被定义为具有没有属性或具有一种以上不同颜色的refid的项。

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

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

一个可能的MySQL查询是如何选择唯一项并将它们插入到表文章中的呢?我不能理解这一点,任何帮助都是非常感谢的。

我的最佳尝试看起来像下面的SQL查询,但是它将只根据ref_id和颜色定义文章,缺少的是具有相同颜色的项目。

代码语言:javascript
复制
/* 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
EN

回答 1

Stack Overflow用户

发布于 2018-12-20 08:15:56

获取这些物品并不难:

代码语言:javascript
复制
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)
       );

我不确定如何将这些转换为“文章”,但这可能是您需要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53860525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档