我有一个关于获取数据的查询。
1 | GHSB
2 | ENGLISH
3 | GUJ
4 |俄罗斯
5 |法国
6 | S1
7 | S2
8 | S3
1 | 1 | 2 | 6,7
2 | 3 | 4 | 6,8-
1 | 1 | 6
2 | 1 | 7
3 | 2 | 6
4 | 2 | 8
预期产量为:
GHSB | ENGLISH | S1,S2
GUJ |俄罗斯人| S1,S3
两个数据来自同一个表。 如何实现这种类型的输出。 请帮忙。
我尝试了这个查询但未获得预期的输出:
select t1.*,a1.* FROM ((
SELECT cs.cs_id, se.se_name as bname FROM sub_element se, class_standard cs WHERE cs.board = se.se_id GROUP BY cs.cs_id) as a1,
(SELECT se.se_name as mname FROM sub_element se, class_standard cs WHERE cs.medium = se.se_id GROUP BY cs.cs_id ) as t1)
答案 0 :(得分:1)
您需要加入sub_element
2次
select
se1.se_name as se_name1,
se2.se_name as se_name2
from class_standard cs
join sub_element se1 on se1.id = cs.board_se_id
join sub_element se2 on se2.id = cs.medium_se_id
更新:使用更新后的问题,您可以使用逗号分隔值,并且应该避免使用这些值,因为它未正确规范化,并且将来会引发许多问题。 但是你可以实现
的结果select
cs.cs_id,se1.se_name as se_name1,
se2.se_name as se_name2,
group_concat(se3.se_name) as se_name3
from class_standard cs
join sub_element se1 on se1.se_id = cs.board_se_id
join sub_element se2 on se2.se_id = cs.medium_se_id
left join sub_element se3 on find_in_set(se3.se_id,cs.s_se_id)
group by cs.cs_id ;