LINUX.ORG.RU
ФорумAdmin

Проблема после обновления mysql


0

0

После обновления mysql с 4.1 до 5.0.41 перестал выполняться запрос

SELECT i. * , l.linkid, s.balance_limit, RAND( 6767 ) AS random FROM catalog_item AS i, catalog_category_link AS l LEFT JOIN catalog_set AS s ON s.setid = i.setid WHERE l.itemid = i.itemid AND l.categoryid =1 AND i.publish <>0 ORDER BY random LIMIT 0 , 30

ERROR 1054 (42S22): Unknown column 'i.setid' in 'on clause'

поле setid в catalog_item есть (да и иначе быть не могло, ведь он работал!)

может, кто-то сталкивался? В чем засада? Спасибо!


Засада в том, что mysql-5.x выдвигает более жесткие требования к запросам. Попробуйте так:

SELECT i. * , l.linkid, s.balance_limit, RAND( 6767 ) AS random FROM (catalog_item AS i, catalog_category_link AS l) LEFT JOIN catalog_set AS s ON s.setid = i.setid WHERE l.itemid = i.itemid AND l.categoryid =1 AND i.publish <>0 ORDER BY random LIMIT 0, 30;

Или переставьте местами таблицы, идущие через "," так, чтоб следующий LEFT JOIN подключал новую таблицу к той, для которой задается условие соединения в "ON ...":

SELECT i. * , l.linkid, s.balance_limit, RAND( 6767 ) AS random FROM catalog_category_link AS l, catalog_item AS i LEFT JOIN catalog_set AS s ON s.setid = i.setid WHERE l.itemid = i.itemid AND l.categoryid =1 AND i.publish <>0 ORDER BY random LIMIT 0, 30;

spirit ★★★★★
()
Ответ на: комментарий от spirit

Спасибо! Первый вариант нашел сам, за второй еще раз спасибо! Этот запрос писал сам разработчик, он сумеет поправить. А вот еще оказалось, что joomla 1.0.x не работает с mysql 5.0 (подозреваю, что по аналогичной причине), а это уже хуже :-(

John
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.