MaxxxNSK
@MaxxxNSK
очень начинающий

Как правильно составить запрос SQL?

Всем привет помогите, пожалуйста, правильно и коротко составить запрос:

Есть таблица пользователей:
id - (id пользователя)

Есть таблица вопросов:
id - (id вопроса)
id_cat - (id категории вопроса)

Есть таблица ответов:
id - (id ответа)
id_vopr - (id вопроса)
id_user - (id пользователя)
res - (результат ответа (int))

Нужно получить id пользователей ответивших на все вопросы в определённой категории и желательно в сортировке по сумме res

Уже 2 часа пытаюсь придумать по-короче
  • Вопрос задан
  • 270 просмотров
Решения вопроса 1
@nozzy
Silex, Symfony, Laravel, SQL
Не проверял
select
t1.id,
sum(t2.res) as sum_res
from users t1
inner join otvety t2 on t2.id_user = t1.id
inner join voprosy t3 on t3.id = t2.id_vopr
where t3.id_cat = 5
group by t1.id
order by sum_res
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Информация не полная о схеме БД, какие связи у вас между таблицами?

SELECT o.id_user FROM vopros v
  INNER JOIN otvet o ON o.id_vopr = v.id
WHERE v.id_cat = "id катег."
GROUP BY v.id 
ORDER BY SUM(o.res)
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `q`.`id_cat`, `a`.`id_user`, SUM(`a`.`res`) AS `res`
  FROM `users` AS `u`
  JOIN `questions` AS `q` 
  LEFT JOIN `answers` AS `a` ON `a`.`id_vopr` = `q`.`id` AND `a`.`id_user` = `u`.`id`
  GROUP BY `q`.`id_cat`, `a`.`user`
  HAVING COUNT(*) = COUNT(`a`.`id_vopr`)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы