MYSQL用例为JOIN参数的一部分

时间:2013-06-15 18:37:09

标签: php mysql

我想在post_type为1时使用join,我使用case for join但是我的sql命令不正确。请帮帮我。

MySQL的:

SELECT SQL_CALC_FOUND_ROWS
                   i. * , 
                   c.title AS category_name, 
                   s.title AS status_title, 
                   i.thumb_image, 
                   CONCAT( u.name, ' ', u.family ) AS author
                FROM contents i
                CASE WHEN post_type = 1 then 
                     JOIN categories c ON c.id = i.category
                end
                JOIN users u ON u.id = i.posted_by
                JOIN status_topics s ON s.id = i.t_status
                WHERE i.id = 2

2 个答案:

答案 0 :(得分:0)

为什么不使用if而不是case?

语法:

IF search_condition THEN statement_list
    [ELSEIF search_condition THEN statement_list] ...
    [ELSE statement_list]
END IF

此处提供更多信息:http://dev.mysql.com/doc/refman/5.0/en/if.html

答案 1 :(得分:0)

尝试:

SELECT SQL_CALC_FOUND_ROWS
       i. * , 
       c.title AS category_name, 
       s.title AS status_title, 
       i.thumb_image, 
       CONCAT( u.name, ' ', u.family ) AS author
FROM contents i
LEFT JOIN categories c 
  ON i.category = CASE post_type WHEN 1 then c.id END 
JOIN users u ON u.id = i.posted_by
JOIN status_topics s ON s.id = i.t_status
WHERE i.id = 2