2

education個人IDと教育レベルID、両方とも外部キーを含むテーブルがあります。結果をグループ化して、各個人レコードが単一であり、すべての教育レベルのリストが含まれているようにしたいので、Jane Doe:master、masterを返します。

select 
  concat(person.name_first," ",person.name_last) as name,
  group_concat(person_studylevel.description)
from `person_education`
left join person_studylevel on level = person_studylevel.id
left join person on junior = person.id

これは、group_concat()を追加するまで機能し、その後、空の結果セットを返します。

iveは結果をサブクエリとして使用しようとしましたが、それも機能しませんでした

テーブル構造:

person_education: id(int10), junior(int10), level(int10)
person_studylevel: id(int10), description(varchar100)
person: id(int10), name_first(varchar255), name_last(varchar255)
4

1 に答える 1

1

これをチェックしてください。各人でグループ化する場合は、そのテーブルを最初の左側に配置してください。

クエリ:

select 
  concat(p.name_first," ",p.name_last) as name,
  group_concat(ps.description)
from person p 
left join person_education pe
on p.id = pe.junior
left join person_studylevel ps
on pe.level = ps.id
group by p.id
;

| NAME | GROUP_CONCAT(PS.DESCRIPTION) |
---------------------------------------
|  j k |               degree,masters |
|  a g |               diploma,degree |
|  b h |                         cert |
|  c i |                       (null) |
|  d m |                       (null) |
于 2013-01-23T11:00:28.917 に答える