







|
MySQL.RU - Webboard
Вернуться
Помогите составить сложный запрос (Виктор) 31/07/2007 - 21:13:51
Re: Помогите составить сложный запрос (xeim) 01/08/2007 - 03:42:24
Re: Помогите составить сложный запрос (Vasya) 02/08/2007 - 02:04:49
Re: Помогите составить сложный запрос (xeim) 02/08/2007 - 03:41:01
> Original message text:
> From: Виктор - 31/07/2007 - 21:13:51
> Subject:Помогите составить сложный запрос
> -----------------
> Есть две таблицы:
> 1. news (id INT)
> 2. news_votes(id INT, id_news INT, id_type INT),
> где id_news указывает, какой записи в news соответствует эта запись, а id_type - 0 или 1 в зависимости за или против новости был отдан голос
>
> Нужно составить запрос, который бы возвращал ряды вида
> id | votes_pro | votes_contra
> где id - id новости, а votes_pro и votes_contra - количество записей с id_news=id новости и id_type = 0 и 1 соответственно.
>
> Бьюсь, бьюсь, но не получается построить правильный запрос, знаний не хватает :(((
>
>
From: xeim - 02/08/2007 - 03:41:01
Subject:Помогите составить сложный запрос
-----------------
Без JOIN с таблицей `news` в результах будут отсутствовать новости, за которые вообще не отдано ни одного голоса: ни "за", ни "против". В моём варианте такие новости будут присутствовать с нулями в полях `votes_pro` и `votes_contra`. Экономить ресурсы - это хорошо, но не за счет же функциональности.
Про алиас не проверял, но раз так говоришь, то соглашусь. Тогда запрос будет выглядеть так:
SELECT `news`.`id`,
SUM(`news_votes`.`id_type`) AS `votes_pro`,
COUNT(`news_votes`.`id`) - SUM(`news_votes`.`id_type`) AS `votes_contra`
FROM `news`
LEFT JOIN `news_votes`
ON `news`.`id` = `news_votes`.`id_news`
GROUP BY `news`.`id`
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
31967
|
|