Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » MySQL » Как сделать выборку сразу по всем нужным категориям?

Как сделать выборку сразу по всем нужным категориям?


     07.06.2014    выборка, категории, mysql    Все вопросы » MySQL    1854

вопрос
Здравствуйте, подскажите как делать через запрос выбор нужных категорий по id ? При этом все они не есть обязательными и если есть только в одной категории новости а в других нет выводить в той что есть.

Есть такой запрос
$sql_select = "SELECT id, autor, date, short_story, full_story, xfields, title, category, alt_name FROM " . PREFIX . "_post WHERE sait_status !='off' AND {$stop_list} autor = '$user' AND approve=1 [b]AND category=13[/b]" . $where_date . " ORDER BY date DESC LIMIT 0," . $config['rss_number'];


А именно:
AND category=13 как правильно написать что бы брало и 14 и 15 и 16 и 17 и 18 и 19 и 20 категорию? И если нету новостей в некоторых то выводить в которых есть. Спасибо за помощь!

Ответил: PunPun


category IN ('13','14','15')

5 комментариев

shadow6630
Юзер

shadow6630 - 7 июня 2014 19:47 -

Лучше так
category regexp '[[:<:]](13,14,15,16,17,18,19,20)[[:>:]]'

FastFud
Юзер

FastFud - 7 июня 2014 21:27 -

shadow6630,
Почему ?

shadow6630
Юзер

shadow6630 - 8 июня 2014 00:01 -

FastFud,
просто целка у себя в движке при включенных мультикатегориях использует regexp, вот пример
            if ($config['allow_multi_category']) {
                
                $stop_list = "category regexp '[[:<:]](" . implode ( '|', $allow_list ) . ")[[:>:]]' AND ";
            
            } else {
                
                $stop_list = "category IN ('" . implode ( "','", $allow_list ) . "') AND ";
            
            }
, а я думаю они просто так бы его не использовали (сам не тестировал, но возможна разница в времени выполнения запроса)

PunPun
Эксперт

PunPun - 13 июня 2014 21:05 -

shadow6630, если так, то там в твоем комментарии должно быть не через запятую а через | как прописано в коде.

well​

shadow6630
Юзер

shadow6630 - 13 июня 2014 21:11 -

Да, ошибочка вышла, как разделитель нужно ипспользовать "|"

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх