对不起,如果标题是错的,我想不出一个正确的说法。这是我遇到的问题,希望有人能帮我解决问题。我有一个从cms表中检索的SQL调用。我想要输出CMS类别名称,并列出页面上该类别下的页面。例如:
Home
Page One
Page Two
Page Three
Contact
Page One
Page Two
Page Three
下面是我的表中使用上面内容的样子
cms
id_cms | id_cms_category | position | active
1 | 1 | 1 | 1
2 | 1 | 1 | 1
3 | 1 | 1 | 1
4 | 2 | 2 | 1
5 | 2 | 2 | 1
6 | 2 | 2 | 1
cms_category_lang
id_cms_category | name | description
1 | Home | NULL
2 | Contact | NULL
cms_page_lang
id_cms | title | content
1 | Page One | Test Content 1
2 | Page Twi | Test Content 2
3 |Page Three| Test Content 3
4 | Page One | Test Content 4
5 | Page Two | Test Content 5
6 |Page Three| Test Content 6
我已经尝试过几个查询来完成这个任务,但是似乎什么都做不到。
我尝试先查询标题,结果返回一个数组。
SELECT * FROM cms_category_lang
array 0 =>
'id_cms_category' = 1
'name' = Home
'description' = ''
1 =>
'id_cms_category' = 2
'name' = Contact
'description' = ''
然后我查询了cms_page_lang并得到了一个类似的数组,但是使用该表中的值,我尝试在基于id_cms_category的数组中加入它们。我不认为这是我正在寻找的路线,因为它没有正确回音。任何想法或帮助都将不胜感激!
发布于 2014-01-03 19:07:35
看看这个sqlFiddle
我想这会给你你想要的结果。如果希望每个GROUP_CONCAT位于其自己的行中,则可以删除它的cms_page_lang函数。
SELECT
ccl.name
,GROUP_CONCAT(cpl.title)
FROM cms
LEFT JOIN cms_category_lang AS ccl
ON cms.id_cms_category = ccl.id_cms_category
LEFT JOIN cms_page_lang AS cpl
ON cms.id_cms = cpl.id_cms
GROUP BY ccl.name
https://stackoverflow.com/questions/20909643
复制相似问题