我得到了以下查询。
这应该返回一行,但没有。
不幸的是什么都没有。
删除最后一个join子句时:
LEFT JOIN `serene_pagecontent` ON `serene_pageorder`.`pageorder_id` = `serene_pagecontent`.`pagecontent_link`
我确实得到了结果。但当添加时,它不会。
因为据我所知,在联接之前添加LEFT应该会产生结果,即使其中一个字段丢失。
SELECT * FROM `serene_page`
LEFT JOIN `serene_pageoptions` ON `serene_page`.`page_id` = `serene_pageoptions`.`pageoptions_link`
LEFT JOIN `serene_pagetitle` ON `serene_page`.`page_id` = `serene_pagetitle`.`pagetitle_link`
LEFT JOIN `serene_pageorder` ON `serene_page`.`page_id` = `serene_pageorder`.`pageorder_link`
LEFT JOIN `serene_pagecontent` ON `serene_pageorder`.`pageorder_id` = `serene_pagecontent`.`pagecontent_link`
WHERE `page_id` = 34 AND `pageoptions_language` = 'NL' AND `pagetitle_language` = 'NL' AND `pagecontent_language` = 'NL'
谁能告诉我我错过了什么。
编辑
WHERE `serene_page`.`page_id` = 34
AND serene_pageoptions`.`pageoptions_language` = 'NL'
AND serene_pagetitle`.`pagetitle_language` = 'NL'
AND serene_pagecontent`.`pagecontent_language` = 'NL'
编辑解决方案
:
“juergen d”的解决方案
SELECT * FROM `serene_page`
LEFT JOIN `serene_pageoptions` ON `serene_page`.`page_id` =`serene_pageoptions`.`pageoptions_link` AND
`serene_pageoptions`.`pageoptions_language` = 'NL'
LEFT JOIN `serene_pagetitle` ON `serene_page`.`page_id` = `serene_pagetitle`.`pagetitle_link` AND
`serene_pagetitle`.`pagetitle_language` = 'NL'
LEFT JOIN `serene_pageorder` ON `serene_page`.`page_id` = `serene_pageorder`.`pageorder_link`
LEFT JOIN `serene_pagecontent` ON `serene_pageorder`.`pageorder_id` =
`serene_pagecontent`.`pagecontent_link` AND
`serene_pagecontent`.`pagecontent_language` = 'NL'
WHERE `serene_page`.`page_id` = 34
我没有意识到,如果没有的话,我必须添加该子条款
它将变成普通连接。谢谢