как поставить условие if else в LIMIT mysql - PullRequest
2 голосов
/ 06 марта 2012

вот мой запрос

$where_or = " 
                AND
                    content_status = 'Active'
                AND
                    content_post_status = 'published'
                AND
                    deleted = 0
                AND
                    content_type = '$type'
                ORDER BY content_created_at DESC ";

        $select = "content_id, content_title, content_short_description, content_url, content_created_at";

        $query = $this->db->query("
                (
                    SELECT $select
                    FROM tbl_content
                    WHERE 
                    content_category_id = 54
                    $where_or
                    LIMIT 3
                )
                UNION ALL 
                (
                    SELECT $select
                    FROM tbl_content
                    WHERE 
                    content_category_id = 55
                    $where_or
                    LIMIT 2
                )
                UNION ALL 
                (
                    SELECT $select
                    FROM tbl_content
                    WHERE 
                    content_category_id = 56
                    $where_or
                    LIMIT 2
                )
                UNION ALL 
                (
                    SELECT $select
                    FROM tbl_content
                    WHERE 
                    content_category_id = 57
                    $where_or
                    LIMIT 1
                )
                UNION ALL 
                (
                    SELECT $select
                    FROM tbl_content
                    WHERE 
                    content_category_id = 58
                    $where_or
                    LIMIT 1
                )
                UNION ALL 
                (
                    SELECT $select
                    FROM tbl_content
                    WHERE 
                    content_category_id = 60
                    $where_or
                    LIMIT 1
                )
                UNION ALL 
                (
                    SELECT $select
                    FROM tbl_content
                    WHERE 
                    content_category_id = 61
                    $where_or
                    LIMIT 1
                )
                UNION ALL 
                (
                    SELECT $select
                    FROM tbl_content
                    WHERE 
                    content_category_id = 118
                    $where_or
                    if content_type = 'article'
                    begin 
                        LIMIT 10
                    end
                )   
        ");

Вы можете видеть в последнем СОЮЗЕ, я хочу установить ограничение, если условие ... но оно дает мне ошибку ... как я могу это сделать ... пожалуйста, помогите..

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Вы не можете сделать это с MySQL, по крайней мере, не так, как вы пытаетесь.Если вы думаете об этом:

if content_type = 'article'
begin 
   LIMIT 10
end

не имеет смысла.LIMIT применяется к набору, а не к одной записи.Если то, что вы написали, было допустимым SQL, и ваши данные содержали как контент, который был верным для content_type = 'article', так и некоторый, который был ложным.Что бы вы ожидали?

0 голосов
/ 06 марта 2012

Я бы предложил вам ранжировать записи, а затем добавить условие WHERE для фильтрации записей по content_category_id и его рангу.В этом случае вы не будете использовать несколько запросов SELECT ... FROM.

...