| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > [mySQL] выборка COUNT'ов с GROUP BY |
| Автор: Acrobat 13.5.2008, 14:22 | ||
| Приветствую, такая проблема: есть таблица, допустим товаров, у каждого товара есть статус от 1 до 5. т.е. мы получаем такую таблицу id, name, status как мне составить запрос, чтобы выбрать количество всех товаров с группировкой по статусу так, чтобы если у меня нет товаров со статусом 2 запрос вернул количество 0? т.е. в конечном итоге должно получиться что то вроде: со статусом 1 - [количество] со статусом 2 - [количество] .... со статусом 5 - [количество] Это нужно для статистики. Запросом:
у меня не получается... Заранее спасибо за помощь=) ЗЫ: среда программирования php |
| Автор: Magnifico 13.5.2008, 14:55 | ||
| а как изходя из твоей таблицы( id, name, status) может существовать запись с со стаусом 2 но без id и name т.е
есть подозрения что у тебя там более сложная структура таблиц |
| Автор: Magnifico 13.5.2008, 15:41 | ||
|
| Автор: Acrobat 13.5.2008, 16:30 |
| нет, мне нужно только показать все статусы и сколько по ним данных, например: со статусом 1 - [количество] со статусом 2 - [количество] .... со статусом 5 - [количество] Имена не нужны, зря конечно я их в пример таблицы включил. |
| Автор: Akina 13.5.2008, 18:04 | ||
Само собой если в таблице какого-то статуса ВООБЩЕ нет - его не будет и в результирущей выборке. Правильно же - создать таблицу статусов, в которой содержатся все возможные значения. И джойнить её вместо подзапроса. PS. Кавычки расставляй сам. |
| Автор: Magnifico 13.5.2008, 18:49 | ||||
|
| Автор: Acrobat 13.5.2008, 20:49 | ||
| Magnifico, а не слишком много запросов получилось? Akina, чем отличается твой последний запрос от, например моего?
|
| Автор: Akina 13.5.2008, 23:49 |
Независимостью от диалекта. |
| Автор: Acrobat 14.5.2008, 09:03 |
| Всем спасибо за ответы, многое понял) |
| Автор: Magnifico 14.5.2008, 09:24 | ||
Да слишком - но это то что первое в голову пришло (а для оптимизаци нужно время ) тем более DENIZ тебе уже дал более оптимизированный запрос Deniz +1 |