SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.06.2010 11:44:50

ffaust47
Участник
Зарегистрирован: 02.06.2010
Сообщений: 1

UPDATE с MATCH() AGAINST() подзапросом для той же таблицы

Имеется таблица объявлений board, на странице сайта с конкретным объявлением, выводятся заголовки похожих объявлений, чтобы не загружать БД поиском похожих объявлений добавил столбец related VARCHAR, куда раз в день для каждого объявления хочу записывать 10 id`шников похожих записей в виде x,x,x,x,...x. Задача выполнять обновление таблицы в одном запросе UPDATE. Таблица board имеет 5 столбцов: id, name, descr, checked, related.

Попытался вот так:

Код:

UPDATE board AS usr SET usr.related=
(
     SELECT GROUP_CONCAT(x.id) FROM 
    (
          SELECT y.id FROM board AS y WHERE MATCH(y.name, y.descr) AGAINST(usr.name) AND    
          y.checked='y' LIMIT 10
    )
     as x
)

Пишет:
Unknown column 'usr.name' in 'where clause'.

Я также попробовал с вложенным подзапросом непосредственно в AGAINST, но выдает ту же ошибку, т.е. не получается передать заголовок name текущего объявления из основного запроса в подзапрос.

Неактивен

 

#2 04.06.2010 02:39:29

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: UPDATE с MATCH() AGAINST() подзапросом для той же таблицы

В подзапрос через равенство действительно нельзя. Попробуйте переписать
через объединение или сделайте процедуру с курсором.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson