Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Помогите плиз составить запрос (Vlad) 15/10/2010 - 02:17:11
      Re: Помогите плиз составить запрос (Diter) 15/10/2010 - 17:30:05
      Re: Помогите плиз составить запрос (Vlad) 16/10/2010 - 01:52:13
      Re: Помогите плиз составить запрос (Diter) 16/10/2010 - 16:50:11
      Re: Помогите плиз составить запрос (Vlad) 16/10/2010 - 17:20:30

> Original message text:
> From: Vlad - 15/10/2010 - 02:17:11
> Subject:Помогите плиз составить запрос
> -----------------
> Имеется 2 таблицы: статьи и комментарии.
> Articles:
> | id | title | content |
> Comments:
> | id | article_id | comm_text |
>
> Отношения Articles-Comments один ко многим.
>
> Задача: выбрать первые 10 статей с кол-вом комментариев, где комментариев больше нуля, отсортировать по кол-ву комментариев (по убыванию) затем по id статьи (по убыванию).
>
> Наглядно, в результате мне нужно следующее:
> Result:
> | id | title | total_comments |
> 1
> 2
> 3
> ..
> 10
>
> Важно. Задачу нужно решить одним запросом.
>
> Что-то я совсем запутался. Помогите пожалуйста составить запрос.
>
>
>


From: Vlad - 16/10/2010 - 01:52:13
Subject:Помогите плиз составить запрос
-----------------
Большое человеческое спасибо!

Хочу ещё понять один момент. Если убрать из запроса HAVING total_comments>0, то результат получается точно такой же. Если я правильно понимаю, это из-за условия WHERE a.id=c.article_id, в результате мы получаем только те статьи, где есть хотя бы один комментарий. Я правильно понял?

Если из моей задачи убрать условие - "где комментариев больше нуля", то запрос у меня получился такой:

SELECT a.id, a.title, COUNT(c.id) as total_comments
FROM Articles as a
LEFT JOIN Comments as c ON a.id=c.article_id
GROUP BY a.id
ORDER BY t_news DESC, s.id DESC
LIMIT 10

Вроде работает :)



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
37594



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |