Выборка с определенными параметрами

ortick

Новичок
Добрый день.
Не поможет ли кто советом?

Имеем, например, таблицу mysql с полями:

user_id
comment_title
comment_text
comment_rating
...

Надо сделать выборку - сколько у пользователей комментариев с положительным рейтингом. Делаем:

SELECT *, COUNT(*) as total FROM table WHERE comment_rating > 0 GROUP BY user_id

Получаем:
user_id | comment_title | comment_text |... | total

1 | title | text | .. | 10
2 | title | text | .. | 5
3 | title | text | .. | 33
4 | title | text | .. | 55
5 | title | text | .. | 100
...

Задача 1.

Как выбрать только тех у кого скажем больше 20 комментариев с положительным рейтингом?
Запрос вида:

SELECT *, COUNT(*) as total FROM table WHERE comment_rating > 0 AND total > 20 GROUP BY user_id

не проходит...

Задача 2.

Имеем еще таблицу table2 с наградами:

user_id
nagrada_id

Нужно выьрать данные согласно решению задачи №1 и добавить условия "отсутствует в table2 с nagrada_id таким-то". Т.е.:

Выбрать тех у кого 20 комментариев с положительным рейтингом и не имеющих уже nagrada_id = 1, например. А если в table2 уже есть user_id с nagrada_id = 1, то его не выводить.

Надеюсь выложил понятно. На php все это сделать можно, но хотелось бы одним (двумя) запросами и на уровмне mysql все это сделать.

Заранее спасибо, тем кто дочитал все до конца.
 

radioheaded

PHP нуб
Задача 1. Читаем про HAVING
Задача 2. Читаем про JOIN, разбираемся в LEFT и INNER, читаем про IS NULL

Очень похоже на типичные задачки с собеседования, поэтому, вероятно, готовые решения вам никто не выложит. Изучайте, подсказок достаточно.
 
Сверху