Mysql 将groupmembers与另一个组匹配,并将其名称添加到第一个组

Mysql 将groupmembers与另一个组匹配,并将其名称添加到第一个组,mysql,Mysql,如果有一个或多个组具有完全相同的成员,我需要在表a中获取每个组的成员,并在表b中查找,如果是,则将生成的组名添加到结果中 表a列出了集团成员: +----+-----+----+----+ |uniqeid | objectname | property | value| +----+-----+----+----+ |0 |东西1 |颜色|灰色| +----+-----+----+----+ |1 |厚度1 |硬度| 100| +----+-----+----+----+ |2 | thi

如果有一个或多个组具有完全相同的成员,我需要在表a中获取每个组的成员,并在表b中查找,如果是,则将生成的组名添加到结果中

表a列出了集团成员:

+----+-----+----+----+ |uniqeid | objectname | property | value| +----+-----+----+----+ |0 |东西1 |颜色|灰色| +----+-----+----+----+ |1 |厚度1 |硬度| 100| +----+-----+----+----+ |2 | thingy | sofness | 80| +----+-----+----+----+ |3 |东西|颜色|棕色| +----+-----+----+----+ |4 |东西|散发|气体| +----+-----+----+----+ |5 |项目|存在| 1| +----+-----+----+----+ 继续使用无穷无尽的数据,例如各种属性和对象名

表_b基本相同,但它包含表_a中组的对象类型

+----+-----+-----+ |uniqeid | objecttype |属性| +----+-----+-----+ |0 |石|色| +----+-----+-----+ |1 |石|硬度| +----+-----+-----+ |2 |填充物|柔软度| +----+-----+-----+ |3 |东西|颜色| +----+-----+-----+ |4 |东西|散发| +----+-----+-----+ 继续处理大量数据

现在我想用它制作一个视图表,如下所示: +-----+----------+------+ |objectname | propertys | objecttype| +-----+----------+------+ |材料1 |颜色、硬度|石头| +-----+----------+------+ |柔软、颜色、散发出的东西| +-----+----------+------+ |项目|存在|空| +-----+----------+------+

要使一个对象成为某种类型,两侧必须有确切的属性,重复的属性将被忽略

这应该只在mysql中完成

我试着让两个团体对抗但失败了, 视图不喜欢子查询


问候

一个简单的方法是加入属性列表

幸运的是,mysql具有生成这样一个列表的功能,并且可以生成一个独特的、顺序一致的、适合比较的元素列表:

select
    objectname,
    a.propertys,
    group_concat(objecttype) objecttypes
from (select objectname,
    group_concat(distinct property order by property) propertys
    from table_a
    group by 1) a
left join (select objecttype,
    group_concat(distinct property order by property) propertys
    from table_b
    group by 1) b
on a.propertys = b.propertys
group by 1, 2

如果没有匹配项,左连接将在最后一列中为空。

您是否可以编辑您的问题以包括您尝试的查询,即使它不起作用?它将帮助其他人更好地理解您的问题和您的问题。我在“字段列表”中设置了一个1054-未知列“a.property”。现在唯一的问题是,匹配多个objecttype的对象会得到一个新行,而不是objecttype。您没有说您希望objecttype也成为列表,您的示例数据和示例输出也没有,我们不是读心术的人。尽管如此,我已经修正了这个查询来实现这一点。