@porozhnyy

Как победить ошибку 1054 mysql?

Доброго времени суток. При выполнении запроса выдает ошибку [Err] 1054 - Unknown column 'stitle.subcat' in 'where clause'

UPDATE ad_copy, (SELECT CONCAT_WS(" - ", ad_copy.title, stitle.ttitle) AS `p` from ad_copy, stitle 
where ad_copy.category = stitle.subcat ORDER BY RAND()) `p` set `title` = `p` where ad_copy.category = stitle.subcat


Суть - запрос должен брать данные из одной таблицы и дополнять уже имеющиеся данные ими. Заранее спасибо за помощь!
  • Вопрос задан
  • 5995 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Ошибка вполне понятна, во внешнем WHERE таблица stitle не определена, соответственно колонка stitle.subcat тоже.
Запрос несколько бредовый, ORDER BY RAND() - наихудший по скорости вариант, как правило можно обойтись без него. Лучше скажите, какой результат хотите получить.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
UPDATE `ad_copy` AS `a` 
    LEFT JOIN (
        SELECT `a`.`title`, (
            SELECT `s`.`ttitle`
                FROM `stitle` AS `s` 
                WHERE `a`.`category` = `s`.`subcat` 
                ORDER BY RAND() 
                LIMIT 1
            ) AS `ttitle`
        FROM `ad_copy` AS `a`
    ) AS `s` USING(`title`) 
    SET `a`.`title` = CONCAT_WS(" - ", `a`.`title`, `s`.`ttitle`)

1. При каждом следующем запросе к ad_copy.title будет дописываться новое значение?
2. Если количество записей в каждой подкатегории небольшое, то ORDER BY RAND() не сильно скажется на производительности. Если большое - может оказаться, что лучше делать внешними средствами.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@porozhnyy Автор вопроса
UPDATE 
ad_copy a
JOIN stitle  s ON (a.category = s.subcat)
SET a.`title` = CONCAT_WS( " - ",a.title,s.ttitle)


Сделал так. Мне надо чтобы в колонку ttitle добавлялось случайное значение из stitle...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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