Php 多对多关系中选择的解决方案
我有以下表格:其中一个项目可能有多个类别,一个类别可能有多个项目Php 多对多关系中选择的解决方案,php,mysql,sql,Php,Mysql,Sql,我有以下表格:其中一个项目可能有多个类别,一个类别可能有多个项目 **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, pro
**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_名称有不同的值,那么我如何在cat_名称字段中用逗号分隔这两个或更多的值进行内爆或聚合呢?查看函数。像这样的东西应该适合你:
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