2016-10-04 124 views
0

在回答這個問題後,在一組左連接中獲取CASE將不再煩人!關於LEFT JOIN語法的CASE條件

但是我已經查詢以下和平是這是一個正確的apparoache申請一個case語句,只是case語句之前給出一個語法錯誤(最後括號)說,缺少右括號

from((((((`tbl_workflow_step_item` 
LEFT JOIN `tbl_workflow_step_users` ON ((`tbl_workflow_step_item`.`step_id` = `tbl_workflow_step_users`.`step_id`))) 
LEFT JOIN `tbl_workflow_steps` ON ((`tbl_workflow_step_item`.`step_id` = `tbl_workflow_steps`.`step_id`))) 
LEFT JOIN `tbl_workflow_user_assigned` ON ((`tbl_workflow_step_users`.`user_id` = `tbl_workflow_user_assigned`.`user_id`))) 
LEFT JOIN `tbl_workflow` ON ((`tbl_workflow`.`workflow_id` = `tbl_workflow_steps`.`workflow_id`))) 
LEFT JOIN `tbl_report_type` ON ((`tbl_report_type`.`type_id` = `tbl_workflow_step_item`.`type`))) 
case 
when (`tbl_workflow`.`type` = 2) 
then 
left join `tbl_report_file` on ((`tbl_report_file`.`file_id`=`tbl_workflow_step_item`.`target_item_id`))) 
else 
LEFT JOIN `tbl_blog` ON ((`tbl_blog`.`blog_id` = `tbl_workflow_step_item`.`target_item_id`))) 
+0

你不能這樣做 - 它沒有意義。想想看:根據'case'運算符的結果,返回的行將有不同的模式。 – Phylogenesis

回答

0

不,這不是好。 Case/when語句不能用於JOIN部分。這是你應該做的:

SELECT 
CASE 
    WHEN(`tbl_workflow`.`type` = 2) 
     THEN `tbl_report_file`.YOURFIELDHERE 
    ELSE 
    `tbl_blog`.YOURFIELDHERE 
END AS theAliasYouWant 
FROM((((((`tbl_workflow_step_item` 
LEFT JOIN `tbl_workflow_step_users` ON ((`tbl_workflow_step_item`.`step_id` = `tbl_workflow_step_users`.`step_id`))) 
LEFT JOIN `tbl_workflow_steps` ON ((`tbl_workflow_step_item`.`step_id` = `tbl_workflow_steps`.`step_id`))) 
LEFT JOIN `tbl_workflow_user_assigned` ON ((`tbl_workflow_step_users`.`user_id` = `tbl_workflow_user_assigned`.`user_id`))) 
LEFT JOIN `tbl_workflow` ON ((`tbl_workflow`.`workflow_id` = `tbl_workflow_steps`.`workflow_id`))) 
LEFT JOIN `tbl_report_type` ON ((`tbl_report_type`.`type_id` = `tbl_workflow_step_item`.`type`))) 
LEFT JOIN `tbl_report_file` on ((`tbl_report_file`.`file_id`=`tbl_workflow_step_item`.`target_item_id`))) 
LEFT JOIN `tbl_blog` ON ((`tbl_blog`.`blog_id` = `tbl_workflow_step_item`.`target_item_id`)))