我得到了以下不会返回结果的查询。所有表名和列都是正确的;但是,无法让它返回结果。我拿出主题表,它正常工作。有些东西不适用于主题部分。谁能发现这个问题?表名和列名是正确的。这是我第一次使用COALESCE而且我不确定我是否正确使用它。
处理主题,这是我的目标:
如果draft_pages.theme = 0,我希望它从domain_profile.default_theme中提取值。不确定COALESCE是否是正确的解决方案。
$getDRAFTinfo = $con->query("
SELECT
draft_pages.title,
draft_pages.url,
draft_pages.status,
draft_pages.modified,
draft_pages.modifier,
draft_pages.created,
draft_pages.creator,
draft_pages.domains,
COALESCE(draft_pages.theme, domain_profile.default_theme),
draft_pages.meta,
draft_pages.script,
draft_pages.page_lock,
draft_pages.design_lock,
themes.stylesheets,
domain_profile.default_theme
FROM draft_pages
JOIN domain_profile ON domain_profile.domain = '". $websitedomain ."'
JOIN themes ON themes.id = COALESCE(draft_pages.theme, domain_profile.default_theme)
WHERE draft_pages.id = '". $draftID ."'")
or die ('Unable to execute query. '. mysqli_error($con));
答案 0 :(得分:1)
使用CASE
语句代替
case when draft_pages.theme = 0 then domain_profile.default_theme else draft_pages.theme end