我有一个名为FieldList
的表,如下所示:
ElementName|Description|comp_id|FieldName
-----------------------------------------
Name | red | 1 | names
Name | blue | 7 | names
field | red | 1 | names
boxes | blue | 5 | blues
field | orange | 7 | reds
我想显示一个新表格,只显示相同的ElementNames
,然后显示它们属于哪个comp_id
,所以它看起来像这样:
ElementName| comp_id| comp_id
-----------------------------
Name | 1 | 7
field | 1 | 7
它不必看起来完全像这样,但关键是我希望能够加入并显示ElementNames
相同但具有不同comp_id
的{{1}}。
这是我已经有的一点sql代码,但它显然不起作用。
SELECT a.comp_id, a.ElementName, b.ElementName
FROM FieldList a
INNER JOIN FieldList b ON a.ElementName = b.ElementName;
答案 0 :(得分:0)
试试这个......
SELECT a.ElementName, a.comp_id, b.comp_id
From FieldList a
left join FieldList b on
a.ElementName = b.ElementName and
a.comp_id <> b.comp_id
WHERE a.comp_id is not null
答案 1 :(得分:0)
您似乎想要具有相同compid的元素名称。如果是这样,您可以像这样使用group_concat()
:
select group_concat(elementname), comps
from (select fl.elementname, group_concat(fl.comp_id order by fl.comp_id) as comps
from fieldlist fl
group by fl.elementname
) en
group by comps;
这实际上产生了包含两个列表的行:
Name,field 1,7
但它似乎包含了你想要的信息。
答案 2 :(得分:0)
此查询可以完成您想要的任务:
SELECT a.ElementName, a.comp_id, b.comp_id
FROM FieldList a
JOIN FieldList b ON a.ElementName = b.ElementName
WHERE a.comp_id != b.comp_id
GROUP BY a.ElementName, (a.comp_id + b.comp_id);
请注意,我通过添加两个comp_ids进行分组。如果我没有,你就不会为每个重复获得行。