SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 11.07.2009 01:32:01

smackthat
Завсегдатай
Зарегистрирован: 18.02.2009
Сообщений: 32

подсчет элементов из другой таблицы

Привет! Вот такая проблема: у меня есть 2 таблицы:

первая - articles - с статьями: имеет поля id, text, category
вторая - category - с описаниями категорий статей: id, name, key_words

тоесть articles.category - это просто число, которое указывает на category.id (внешний ключ в общем)

Так вот. Я пытаюсь посчитать сколько статей определенной категории есть в таблице articles. Делаю так:

SELECT category.id,
            category.name,
            category.key_words,
            COUNT(articles.id) AS amount
                                       
            FROM   category, articles
            WHERE  articles.category = category.id
                                       
            GROUP BY category.id
            ASC

Все работает, но если нет ниодной статьи в категории, то она не выберается. А мне нужно чтобы выбирались все категории, даже если статей по не нет. Как это сделать?

Неактивен

 

#2 14.07.2009 01:20:59

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: подсчет элементов из другой таблицы

Запятая это синоним INNER JOIN, а он не выбирает строки, не имеющие соответствия. В вашем случае запрос нужно переписать с помощью LEFT JOIN

SELECT category.id,
            category.name,
            category.key_words,
            COUNT(articles.id) AS amount
                                       
            FROM   category LEFT JOIN articles ON  articles.category = category.id
                                       
            GROUP BY category.id  ASC

Неактивен

 

#3 15.07.2009 17:53:24

smackthat
Завсегдатай
Зарегистрирован: 18.02.2009
Сообщений: 32

Re: подсчет элементов из другой таблицы

спасибо!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson