(SELECT COUNT(*)FROM tableA WHERE stat=1)AS`aliasB`,
IF(`aliasA`=`aliasB`, 1, 0)AS`flag`
FROM`table`
суть такая:
получаю количество ВСЕХ записей из tableA как aliasA
получаю количество записей из tableA как aliasB со статусом 1
далее нужен флаг, если количества равны, то 1 иначе 0
MySQL ругается на алиасы в операторе, а добавлять в сравнение еще раз запросы не красиво. (эти поля aliasA, aliasB) нужны в выборке.
EuGen
Отправлено: 14 Апреля, 2011 - 16:54:55
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Альясы полей нельзя использовать в определениях запроса. Альясы таблиц можно.
Можно сделать
SET aliasA=(SELECT COUNT(*) FROM tableA);
SET aliasB=(SELECT COUNT(*) FROM tableA WHERE stat=1);
{выборка}
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
OrmaJever
Отправлено: 14 Апреля, 2011 - 17:41:40
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
EuGen пишет:
Альясы полей нельзя использовать в определениях запроса
(SELECT COUNT(*)FROM tableA WHERE stat=1)AS`aliasB`,
COALESCE((SELECT 1 FROM(SELECT 1) t HAVING`aliasA`=`aliasB`), 0)AS flag
FROM`table`
Можно так)
А можно вычислять флаг уже после получения данных запроса. А лучше произвести эти подзапросы отдельно, потому что они не зависят от остальных строк, как я вижу.
RomAndry
Отправлено: 14 Апреля, 2011 - 19:28:29
Частый посетитель
Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008
Помог: 6 раз(а)
EuGen
Спасибо, просто у меня в абстракции подобное пока не реализовано.
Идея отличная надо будет на досуге поработать с SET
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.