SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 13.05.2009 22:23:02

Lem0nti
Гуру
Откуда: Северная Пальмира
Зарегистрирован: 08.11.2007
Сообщений: 98

Код для 5.0 не работает под 4.0

Такая ситуация - составил запрос, в котором select from select ... Дома на версии 5.0.45 всё работает, на хостинге 4.0.27 - нет. Вообще задача следующая - во внутренней выборке есть 2 поля, внешняя выборка вычисляет разницу и сортирует по этому вычисляемому полю. Примерно так:

select a.*, a.n-a.g as h from (SELECT <...>) a order by h desc

Подскажите, можно ли в рамках майки 4.0 сделать то, что мне нужно? Или придётся обходить этот момент средствами РНР?

Неактивен

 

#2 14.05.2009 11:32:29

Neval
Гуру
Откуда: Киев
Зарегистрирован: 11.03.2008
Сообщений: 449

Re: Код для 5.0 не работает под 4.0

Вложенные запросы поддерживаются начиная с версии 4.1, делайте выводы сами smile


Человек без чувства юмора - не серьёзный человек wink

Неактивен

 

#3 14.05.2009 11:41:17

Lem0nti
Гуру
Откуда: Северная Пальмира
Зарегистрирован: 08.11.2007
Сообщений: 98

Re: Код для 5.0 не работает под 4.0

Вообще, я проблему решил. Загвоздка была в том, что те 2 поля - count(), и я считал, что если буду использовать 4 count() в запросе (поле1, поле2 и их разница), то это сильно увеличит время выборки из-за дополнительной нагрузки. Оказалось не так и в итоге, конечный запрос выглядит так:

SELECT <...>, count(distinct c1.id), count(distinct c2.id), count(distinct c1.id)-count(distinct c2.id) as h <...> order by h desc

План запроса не изменился.

Неактивен

 

Board footer

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