Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) MySQL Как сделать выборку сразу по всем нужным категориям?

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


     07.06.2014    MySQL    1322

вопрос
Здравствуйте, подскажите как делать через запрос выбор нужных категорий по 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 категорию? И если нету новостей в некоторых то выводить в которых есть. Спасибо за помощь!

Ответил: Gameer


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

Комментарии пользователей (5)

shadow6630
6

131 | 55

shadow6630 - 7 июня 2014 19:47 - Юзер

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

FastFud
50

1599 | 588

FastFud - 7 июня 2014 21:27 - Юзер

shadow6630,
Почему ?

shadow6630
6

131 | 55

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 ";
            
            }
, а я думаю они просто так бы его не использовали (сам не тестировал, но возможна разница в времени выполнения запроса)

Gameer
224

1120 | 395

Gameer - 13 июня 2014 21:05 - Эксперт

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

Истина в противоречии.​

shadow6630
6

131 | 55

shadow6630 - 13 июня 2014 21:11 - Юзер

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

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

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