[英]Incorrectly pivoting table after JOINing?
SELECT
GROUP_CONCAT(if(meta_summary = 'content', content, NULL)) AS content,
GROUP_CONCAT(if(meta_summary = 'supplemental', content, NULL)) AS supplemental,
GROUP_CONCAT(if(meta_summary = 'heading', content, NULL)) AS heading,
cms_pages.meta_filename as filename
FROM
cms_pages
INNER JOIN cms_collection
ON
cms_collection.collection_id LIKE CONCAT('%', cms_pages.page_id, '/heading%' )
OR cms_collection.collection_id LIKE CONCAT('%', cms_pages.page_id, '/content%' )
OR cms_collection.collection_id LIKE CONCAT('%', cms_pages.page_id, '/supplemental%' )
INNER JOIN
cms_content ON cms_collection.collection_id = cms_content.collection_id
WHERE
site_id = 51
GROUP BY
cms_pages.page_id
在 GROUP BY 之前的架构:
Filename Content
pageA (Heading Content)
pageA (Content)
pageA (Supplemental Content)
所需的规则集:
Filename Heading Content Supplemental
pageA (Heading Content) (Content) (Supp. Content)
我尝试阅读http://www.artfulsoftware.com/infotree/queries.php#78,但无法弄清楚为什么这对我不起作用-好像是错误地将行串联在一起。有些看起来好像他们错误地合并了另一页的内容。 可能是因为我所有的联接都需要对concat组执行子查询吗?
更新#1:创建了一个sqlfiddle @ http://sqlfiddle.com/#!2/fe3e3/1 ,但实际上在这里有效。
a)我没有正确地创建它b)也许是NaviCat弄乱了结果,尽管我对此表示怀疑
更新#2:找到了原因-这是因为我使用的LIKE(正确地)匹配了子字符串,所以'2 / content'将匹配'22 / content',依此类推。
如何有效更改cms_collection上的INNER JOIN以进行完全匹配?
尝试从LIKE字符串匹配连接条件的开头删除通配符,如下所示:
SELECT
GROUP_CONCAT(if(meta_summary = 'content', content, NULL)) AS content,
GROUP_CONCAT(if(meta_summary = 'supplemental', content, NULL)) AS supplemental,
GROUP_CONCAT(if(meta_summary = 'heading', content, NULL)) AS heading,
cms_pages.meta_filename as filename
FROM cms_pages
INNER JOIN cms_collection ON
cms_collection.collection_id LIKE CONCAT(cms_pages.page_id, '/heading%')
OR cms_collection.collection_id LIKE CONCAT(cms_pages.page_id, '/content%')
OR cms_collection.collection_id LIKE CONCAT(cms_pages.page_id, '/supplemental%')
INNER JOIN
cms_content ON cms_collection.collection_id = cms_content.collection_id
WHERE
site_id = 53
GROUP BY
cms_pages.page_id
SQLFiddle 在这里 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.