2013-06-15 4 views
1

Я хочу использовать join, когда post_type равно 1, я использую случай для соединения, но моя команда sql неверна. пожалуйста помогите.MYSQL use case для части параметра JOIN

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 

ответ

0

Почему бы не использовать, если вместо случая, когда?

Синтаксис:

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

0

Try:

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