ccop
Новичок
MAX и WHERE
Есть таблица типа text, author_id, category + некоторые опциональные столбцы.
Нужно получить для каждой строки уникального category (хотя записи с category могут повторятся) значение за формулой
MAX( num_show+is_song*20+is_gold_fond*100 ) и соотвественно зафиксировать author_id и category
И потом в этом же запросе подсчитать общее кол-во текстов автора в данной категории, типа
COUNT(*) WHERE author_id = fixed_authro_id AND category = fixed_category
к примеру:
/text/author_id/category/...
/.е./2 /3 /...
/.у./2 /3 /...
/.г./1 /3 /...
/.ш./3 /3 /...
/.щ./3 /3 /...
/.ф./3 /3 /...
К примеру мы получили запись с MAX( num_show+is_song*20+is_gold_fond*100 ) для категории 3 и соотвественно author_id = 2, хотя
вот как узнать что это именно author_id = 2, ведь как я понял MAX мы не можем пихать в WHERE
Т.е. SELECT author_id FORM poetics WHERE MAX( num_show+is_song*20+is_gold_fond*100 ) - не правильный запрос ?
у меня не работает...
Так, предположим мы получили author_id, теперь нужно выполнить запрос SELECT COUNT(*)recount FROM poetics WHERE author_id = 2 AND category = 3
Вспомагательный вопрос: как запихнуть MAX в WHERE ?
Все это желательно сделать одним запрос, хотя в конечном итоге важен только recount последнего запроса.
-~{}~ 15.04.06 23:01:
Есть запрос:
[SQL]
SELECT id, MAX( SUM( id ) )
FROM `poetics`
WHERE 1 GROUP BY id
[/SQL]
При выполнении выдает ошибку: Invalid use of group function
выходит обьединять функции нельзя?
Как можно реализовать алгоритм решения такой проблемы?
-~{}~ 15.04.06 23:14:
Две темы наверное обьединили, но это по сути два разных вопроса....
Добавлю тогда:
у меня есть общее кол-во балов которые пользователь набрал в разделе:
[SQL]
SELECT category cat, SUM( num_show+is_song*20+is_gold_fond*100 ) recount FROM `poetics` WHERE author_id = ид GROUP BY category ORDER BY category ASC
[/SQL]
num_show+is_song*20+is_gold_fond*100 - формула за которой считаем балы
мне нужно получить максимальное кол-во балов в разделе
это можно было бы решить
[SQL]
SELECT category cat, MAX(SUM( num_show+is_song*20+is_gold_fond*100 )) recount FROM `poetics` WHERE author_id = ид GROUP BY category ORDER BY category ASC
[/SQL]
но не работает запрос....
Есть таблица типа text, author_id, category + некоторые опциональные столбцы.
Нужно получить для каждой строки уникального category (хотя записи с category могут повторятся) значение за формулой
MAX( num_show+is_song*20+is_gold_fond*100 ) и соотвественно зафиксировать author_id и category
И потом в этом же запросе подсчитать общее кол-во текстов автора в данной категории, типа
COUNT(*) WHERE author_id = fixed_authro_id AND category = fixed_category
к примеру:
/text/author_id/category/...
/.е./2 /3 /...
/.у./2 /3 /...
/.г./1 /3 /...
/.ш./3 /3 /...
/.щ./3 /3 /...
/.ф./3 /3 /...
К примеру мы получили запись с MAX( num_show+is_song*20+is_gold_fond*100 ) для категории 3 и соотвественно author_id = 2, хотя
вот как узнать что это именно author_id = 2, ведь как я понял MAX мы не можем пихать в WHERE
Т.е. SELECT author_id FORM poetics WHERE MAX( num_show+is_song*20+is_gold_fond*100 ) - не правильный запрос ?
у меня не работает...
Так, предположим мы получили author_id, теперь нужно выполнить запрос SELECT COUNT(*)recount FROM poetics WHERE author_id = 2 AND category = 3
Вспомагательный вопрос: как запихнуть MAX в WHERE ?
Все это желательно сделать одним запрос, хотя в конечном итоге важен только recount последнего запроса.
-~{}~ 15.04.06 23:01:
Есть запрос:
[SQL]
SELECT id, MAX( SUM( id ) )
FROM `poetics`
WHERE 1 GROUP BY id
[/SQL]
При выполнении выдает ошибку: Invalid use of group function
выходит обьединять функции нельзя?
Как можно реализовать алгоритм решения такой проблемы?
-~{}~ 15.04.06 23:14:
Две темы наверное обьединили, но это по сути два разных вопроса....

Добавлю тогда:
у меня есть общее кол-во балов которые пользователь набрал в разделе:
[SQL]
SELECT category cat, SUM( num_show+is_song*20+is_gold_fond*100 ) recount FROM `poetics` WHERE author_id = ид GROUP BY category ORDER BY category ASC
[/SQL]
num_show+is_song*20+is_gold_fond*100 - формула за которой считаем балы
мне нужно получить максимальное кол-во балов в разделе
это можно было бы решить
[SQL]
SELECT category cat, MAX(SUM( num_show+is_song*20+is_gold_fond*100 )) recount FROM `poetics` WHERE author_id = ид GROUP BY category ORDER BY category ASC
[/SQL]
но не работает запрос....