Php 如何从一个表中获取所有值,该表将自身作为同一表中的另一个值邻域字段?
我有三张桌子。 第一个表保留带有id号的“组名称”。第二个表在元素名称旁边保留带有id号和组id号的“组元素”。第三个表保存组元素之间的关系,其中包括元素id、子元素id。 我希望获得concat组名称、元素名称和元素id编号子元素编号。 这里是sqlfiddler链接 我希望得到这样的结果:Php 如何从一个表中获取所有值,该表将自身作为同一表中的另一个值邻域字段?,php,mysql,sql,Php,Mysql,Sql,我有三张桌子。 第一个表保留带有id号的“组名称”。第二个表在元素名称旁边保留带有id号和组id号的“组元素”。第三个表保存组元素之间的关系,其中包括元素id、子元素id。 我希望获得concat组名称、元素名称和元素id编号子元素编号。 这里是sqlfiddler链接 我希望得到这样的结果: Solid Soil 5,6,7 Liquid Oil 8,9,10 我正在使用MySQL和PHP。您可以这样做 SELECT CONCAT(g.group_name,' , ',e.elemen
Solid Soil 5,6,7
Liquid Oil 8,9,10
我正在使用MySQL和PHP。您可以这样做
SELECT CONCAT(g.group_name,' , ',e.element_name)
, GROUP_CONCAT(DISTINCT er.sub_element_id)
FROM groups g
JOIN elements e ON(g.id = e.group_id)
JOIN element_subelement_relation er ON(er.element_id= e.id)
GROUP BY g.group_name, e.element_name
根据评论编辑
SELECT CONCAT(g.group_name,' , ',e.element_name) `group_elements`
, GROUP_CONCAT(DISTINCT er.`sub_element_id`) `ids`
FROM groups g
LEFT JOIN elements e ON(g.id = e.group_id)
LEFT JOIN element_subelement_relation er ON(er.element_id= e.id)
GROUP BY g.group_name, e.element_name
HAVING group_elements IS NOT NULL
ORDER BY g.group_name
使用group\u concat()
演示:只需在子ID上加入并使用group\u concat即可:
select
concat(g.group_name, ' ', e.element_name) as name,
group_concat(sub_element_id order by sub_element_id) as sub_elements
from elements e
inner join groups g on g.id = e.group_id
inner join element_subelement_relation r on r.element_id = e.id
group by name
order by sub_elements, name;
SQL FIDLE:。您也可以尝试以下方法:
SELECT g.group_name, e.element_name, concat(g.id,",", e.id,",",esr.id) as ID
FROM element_subelement_relation esr
LEFT JOIN elements e ON(esr.element_id = e.id)
LEFT JOIN groups g ON(e.group_id = g.id)
您喜欢一列或单独一列的结果吗?使用
GROUP\u CONCAT
和JOIN
链接表。你应该做的第一件事是向我们展示你所做的…我的意思是第一列是实心的,因为第二列和第三列是实心的,以及(5,6,7)如何在记录中而不是在字段中求取值?这不是给每个组提供元素名,op也需要元素名too@MKhalidJunaid非常感谢。我看到了一个关于group_concat on的简单解释,并得到了它。那么,我怎样才能包含不相关的组和元素名称以及按组名称排序的顺序呢?
SELECT g.group_name, e.element_name, concat(g.id,",", e.id,",",esr.id) as ID
FROM element_subelement_relation esr
LEFT JOIN elements e ON(esr.element_id = e.id)
LEFT JOIN groups g ON(e.group_id = g.id)