使用COALESCE在SQL表中连接3个表不返回任何结果

时间:2015-06-17 15:22:11

标签: mysql

我得到了以下不会返回结果的查询。所有表名和列都是正确的;但是,无法让它返回结果。我拿出主题表,它正常工作。有些东西不适用于主题部分。谁能发现这个问题?表名和列名是正确的。这是我第一次使用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));

1 个答案:

答案 0 :(得分:1)

使用CASE语句代替

case when draft_pages.theme = 0 then domain_profile.default_theme else draft_pages.theme end