SQL多组查询,用于一对多关系



我是sql新手(不经常使用),我有一个相对复杂的(至少从我的角度来看)查询,我没有运气写

我的人际关系如下:

人只有一份工作。人们也有一个FavoriteHobby。

我想查询所有的人(这部分很容易)。我想根据人们从事的工作对他们进行分类。在给定工作的分组中,我想根据他们的FavoriteHobby对这些人进行"子分组"。

有人知道我如何把这个查询放在一起吗?我真的很挣扎!

给出这些人的名字、工作和爱好的样本

   names      obs        hobbies
Alice,      Engineer,    Baseball
Amanda,     Engineer,    Baseball
Adrian,     Engineer,    Hockey
Bill,       Engineer,    Hockey
Bob,        Teacher,     Tennis
Mike,       Teacher,     Tennis
Sansa,      Teacher,     Golf
Jeff,       Teacher,     Golf

我想要这样的结果

Group A:
    subgroup i: alice, amanda
    subgroup ii: adrian, bill
Group B:
    subgroup i: bob, mike
    subgroup ii: sansa, jeff
我非常感谢你的帮助。欢呼。

SQL查询返回的结果集看起来像表——所有行都有相同的列。你可以按工作和爱好分组:

select job, hobby, group_concat(name) as names
from table1
group by job, hobby
order by job, hobby;

您可以使用变量枚举这些:

select (@rn := @rn + 1) as grp, job, hobby, group_concat(name) as names
from table1 cross join
     (select @rn := 0) vars
group by job, hobby
order by job, hobby;

这是否足够?它将给组编号,如1、2、3、4,而不是在每个作业中重新编号。

最新更新