简体   繁体   English

如何从一个表中获取所有值,该表将自身包含在同一个表中的另一个值邻居字段?

[英]How to get all values from a table which includes itself as another value neighbour field at the same table?

I have 3 tables. 我有3张桌子。 First table keeps "group_names" with id numbers. 第一个表保留带有id号的“group_names”。 Second table keeps "groups_elements" with id numbers and group_id numbers next to element_name. 第二个表将“groups_elements”与id_name和group_id数字保持在element_name旁边。 Third table keeps relations between group_elements which includes element_id, sub_element_id. 第三个表保持group_elements之间的关系,包括element_id,sub_element_id。 I wish to get concat group_name, element_name and element_id numbers sub_elements numbers. 我希望得到concat group_name,element_name和element_id数字sub_elements数字。 Here is sqlfiddler link http://sqlfiddle.com/#!2/44f63 这是sqlfiddler链接http://sqlfiddle.com/#!2/44f63

And i wish to get such result: 我希望得到这样的结果:

Solid Soil  5,6,7
Liquid Oil  8,9,10

I am using MySQL and PHP. 我正在使用MySQL和PHP。

You can do so 你可以这样做

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

Demo 演示

Edit from comments 从评论中编辑

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

Demo 演示

using group_concat() 使用group_concat()

SELECT g.group_name, group_concat(sub_element_id) as items
FROM elements e INNER JOIN element_subelement_relation er
ON e.id = er.element_id INNER JOIN groups g
ON g.id = e.group_id
GROUP BY g.group_name

demo: http://sqlfiddle.com/#!2/44f63/21 演示: http//sqlfiddle.com/#!2/44f63/21

Simply join and use group_concat on the sub ids: 只需在子ID上加入并使用group_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;

The SQL fiddle: http://sqlfiddle.com/#!2/44f63/31 . SQL小提琴: http//sqlfiddle.com/# !2/44f63/31。

You may also want to try these: 您可能还想尝试这些:

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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如果另一列包含所有请求值集,如何从表中选择特定列? - How to select particular column from table if another column includes all the set of requested values? 如何从另一个表中将2个字段匹配到另一个表中相同1个字段的数据 - How to get data from another table matching 2 fields to same 1 field from another table 如何从laravel中同一数据库下的另一个表中获取值? - How to get the value from another table under same database in laravel? 如何在同一个表的另一个字段上填充一个字段的值 - How to populate the value of a field on another field on same table 选择所有值并同时从不同表中总结一个字段的值 - Selecting all values and sum up a field's value from different table at the same time 如何使用php从另一个表获取一个表字段值 - How to get one table field values from another table using php 如何将值从另一个表获取到PHP / MySQL中的另一个表 - How to Get VALUES from another table into another table in PHP/MySQL 如何搜索表中是否存在多个值并且在另一列中都具有相同的值? - How to search if multiple values exist in the table and all have the same value in another column? 如何根据同一表中另一列的值获取列的所有值? - How to fetch all values of a column based on value of another column in same table? 如何从表字段中获取最高价值 - How to get highest value from a table field
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM