首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JOINing后不正确的转轴表?

问JOINing后不正确的转轴表?
EN

Stack Overflow用户
提问于 2013-06-13 06:15:01
回答 1查看 63关注 0票数 2
代码语言:javascript
复制
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

组面前的架构由:

代码语言:javascript
复制
Filename        Content

pageA           (Heading Content)
pageA           (Content)
pageA           (Supplemental Content)

期望的规则集:

代码语言:javascript
复制
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:找到了原因--因为我使用的是(正确的)匹配子字符串,所以'2/content‘将匹配'22/content’等等。

如何以有效的方式更改cms_collection上的内部连接以进行精确匹配?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-13 15:02:35

尝试从LIKE字符串匹配连接条件的开头删除通配符,如下所示:

代码语言:javascript
复制
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 这里.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17080364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档