我不确定我的问题的最佳答案是在php中找到还是我如何组织我的结果。我将我的网站页面在数据库中以三个表页面,组件,脚本进行组织。我用这样的语句选择页面数据:
SELECT pages.id AS pageID, pages.view AS pageView, pages.accessLev, scripts.scriptPath, components.componentPath
FROM `pages`
LEFT OUTER JOIN scripts
ON scripts.page_id = page.id
LEFT OUTER JOIN components
ON components.page_id = pages.id
WHERE pgs.pageName = 'home'
这些页面包含不同数量的脚本和组件,多个一对多的关系。
如果一个页面有两个脚本和一个组件,我会在每个脚本的结果中得到两行。
pageID pageView accessLev scriptPath componentPath
2 homeView 0 script1 component1
2 homeView 0 script2 component1
如果它有2个组件我得到4行:,
pageID pageView accessLev scriptPath componentPath
2 homeView 0 script1 component1
2 homeView 0 script1 component2
2 homeView 0 script2 component1
2 homeView 0 script2 component2
我的问题我猜是以太最好如何订购mysql的结果,或者我应该使用php来处理结果的组织。
答案 0 :(得分:2)
如果您希望每页有一个结果,则必须将查询更改为以下内容:
SELECT
`pages`.id AS pageID,
`pages`.view AS pageView,
`pages`.accessLev,
GROUP_CONCAT(`scripts`.scriptPath SEPARATOR ',') AS scriptsPath,
GROUP_CONCAT(`components`.componentPath SEPARATOR ',') AS componentsPath
FROM `pages`
LEFT OUTER JOIN `scripts`
ON `scripts`.page_id = `pages`.id
LEFT OUTER JOIN `components`
ON `components`.page_id = `pages`.id
WHERE `pages`.pageName = 'home'
GROUP BY `pages`.id