0

私は次の表を持っています:1つのプロジェクトに多くのカテゴリがあり、1つのカテゴリに多くのプロジェクトがある場合...

**project**
proj_id pk
proj_name 
proj_descr
proj_what_we_did
proj_url
proj_descr_url

**project_per_categories**
project_proj_id pk
category_cat_id pk

**category**
cat_id pk
cat_name 

および次の選択:

SELECT proj_name, proj_descr, 
proj_what_we_did, proj_url, 
proj_descr_url, cat_name,  foto_url
FROM   project p, project_per_categories pc,
category c, foto f
WHERE  p.proj_id = pc.project_proj_id AND
pc.category_cat_id = c.cat_id AND
p.proj_id = f.foto_id
ORDER BY p.proj_id DESC
LIMIT 6

これにより、var_dumpに次の結果がもたらされます。

    array (size=2)
   0 => 
     array (size=7)
       'proj_name' => string 'Rockable Magazine' (length=17)
       'proj_descr' => string 'Id nihil consectetur facilis assumenda minimau'(length=329)
       'proj_what_wi_did' => string 'Web Design' (length=10)
       'proj_url' => string 'http://localhost/datacode/projeto' (length=33)
       'proj_descr_url' => string 'Rockable-Magazine' (length=17)
       'cat_name' => string 'web design' (length=10)
       'foto_url' => string 'localhost/datacode/portfolio/case_study.jpg' (length=43)
   1 => 
     array (size=7)
       'proj_name' => string 'Rockable Magazine' (length=17)
       'proj_descr' => string 'Id nihil consectetur facilis assumenda minimau'(length=329)
       'proj_what_we_did' => string 'Web Design' (length=10)
       'proj_url' => string 'http://localhost/datacode/projeto' (length=33)
       'proj_descr_url' => string 'Rockable-Magazine' (length=17)
       'cat_name' => string 'css' (length=3)
       'foto_url' => string 'localhost/datacode/portfolio/case_study.jpg' (length=43)

ここで、cat_nameのみが異なる値を持っていることに注意してください。コンマで区切られた、cat_nameフィールドのこの2つ以上の値をどのように内包または集約できますか?

4

1 に答える 1

1

group_concat関数を調べます。このようなものがあなたのために働くはずです:

SELECT 
  proj_name, 
  proj_descr, 
  proj_what_we_did, 
  proj_url, 
  proj_descr_url, 
  group_concat(cat_name),  
  foto_url
FROM   project p, 
  project_per_categories pc,
  category c, 
  foto f
WHERE  p.proj_id = pc.project_proj_id 
  AND pc.category_cat_id = c.cat_id 
  AND p.proj_id = f.foto_id
GROUP BY p.proj_id
ORDER BY p.proj_id DESC
LIMIT 6
于 2012-12-04T12:54:08.777 に答える