Помогите подправить mysql запрос для DLE

K
На сайте с 18.11.2008
Offline
84
1011

Больше вопрос относится к тем, кто разбирается в движке. Надеюсь, если в моем бреде ошибок нет, то подскажете, как реализовать мою задумку.

Итак, требуется выкинуть из "похожих новостей" некоторые категории, которые я не хочу включать в похожие новости, извиняюсь за каламбур.

Вот сам запрос:

$db->query( "SELECT id, title, date, category, alt_name, flag FROM " . PREFIX . "_post WHERE MATCH (title, short_story, full_story, xfields) AGAINST ('$body') AND id != " . $row['id'] . " AND approve='1'" . $where_date . " LIMIT " . $config['related_number'] );

Например, мне нужно исключить категории 1 и 2, я пишу:

$db->query( "SELECT id, title, date, category, alt_name, flag FROM " . PREFIX . "_post WHERE category NOT IN (1,2) AND MATCH (title, short_story, full_story, xfields) AGAINST ('$body') AND id != " . $row['id'] . " AND approve='1'" . $where_date . " LIMIT " . $config['related_number'] );

Собственно, после этого чищу кэш, обновляю, ошибки нет, но и новости из указанных категорий как показывались, так и показываются.

Спасибо.

K
На сайте с 18.11.2008
Offline
84
#1

up. Неужели неисполнимая задача поставлена?

md5by
На сайте с 30.12.2011
Offline
68
#2
Knigorub:
up. Неужели неисполнимая задача поставлена?

Нет, запрос то верный. Может быть вы его не в том месте правите?

P.S. Кажется понял, ведь у нас новости могут быть одновременно в нескольких категориях, поэтому category NOT IN (1,2) сработает только для новостей которые опубликованы в 1 и 2 категории одновременно.

K
На сайте с 18.11.2008
Offline
84
#3

не совсем так. У меня отключены мультикатегории, потому я такой вариант исключаю. Может, есть другой вариант решения?

ne0n91
На сайте с 28.03.2011
Offline
58
#4
WHERE category NOT IN (1,2)

Может так:

WHERE category!='1' OR category!='2'

Вообще есть предположение что NOT IN (1,2) не срабатывает из за несовпадения типа данных, ищет числовой int тип, а в базе у вас varchar, возможно сработает так: NOT IN ('1','2').

K
На сайте с 18.11.2008
Offline
84
#5
ne0n91:
NOT IN ('1','2').

Насколько понял, сработало. Буду тестить. +

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий