从同一个表中获取数据

时间:2015-04-04 18:45:46

标签: mysql

我有一个关于获取数据的查询。

表名:sub_element

se_id | SE_NAME

1 | GHSB
2 | ENGLISH
3 | GUJ
4 |俄罗斯
5 |法国
6 | S1
7 | S2
8 | S3

表名= class_standard

cs_id | board_se_id | medium_se_id | s_se_id

1 | 1 | 2 | 6,7
2 | 3 | 4 | 6,8-

表名:class_standard_subject

css_id | cs_id | SE_ID

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)

1 个答案:

答案 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 ;