Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [MySQL] Посчет категорий 
V
    Опции темы
MoLeX
  Дата 29.4.2013, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 0
Всего: 140



Добрый день.
Помогите составить запрос подсчитывающий количество одинаковых категорий у авторов.

Вот используемые таблицы
Код

CREATE TABLE IF NOT EXISTS `book_genre` (
  `book_id` bigint(20) NOT NULL DEFAULT '0',
  `genre_id` bigint(20) NOT NULL DEFAULT '0',
  KEY `book_id` (`book_id`),
  KEY `genre_id` (`genre_id`)
) ENGINE=MyISAM;

CREATE TABLE IF NOT EXISTS `book_author` (
  `book_id` bigint(20) NOT NULL DEFAULT '0',
  `author_id` bigint(20) NOT NULL DEFAULT '0',
  KEY `book_id` (`book_id`),
  KEY `author_id` (`author_id`)
) ENGINE=MyISAM;


Получается что:
1. книга может принадлежать нескольким категориям
2. книга может принадлежать нескольким авторам

А на входе имеем список категорий.

book_id - книга
genre_id - категории
author_id - автор


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Akina
Дата 29.4.2013, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(MoLeX @  29.4.2013,  14:52 Найти цитируемый пост)
запрос подсчитывающий количество одинаковых категорий у авторов

Вопрос непонятен.
Дано два автора, и надо посчитать, сколько различающихся категорий имеется в списке категорий у каждого из авторов? Или имеется в виду что-то иное?

Дайте дополнительно тестовое наполнение таблиц, входные данные и результат на этих входных данных и этом наполнении. С пояснением, почему именно так.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
MoLeX
Дата 30.4.2013, 05:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 0
Всего: 140



Akina, прошу прощения за неполную информацию.
Исправляюсь:
Код

CREATE TABLE IF NOT EXISTS `book_genre` (
  `book_id` bigint(20) NOT NULL DEFAULT '0',
  `genre_id` bigint(20) NOT NULL DEFAULT '0',
  KEY `book_id` (`book_id`),
  KEY `genre_id` (`genre_id`)
) ENGINE=MyISAM;
INSERT INTO `book_genre` (`book_id`, `genre_id`) VALUES 
(101, 201), (101, 202), (101, 203), (102, 202), (102, 200), (103, 200);

CREATE TABLE IF NOT EXISTS `book_author` (
  `book_id` bigint(20) NOT NULL DEFAULT '0',
  `author_id` bigint(20) NOT NULL DEFAULT '0',
  KEY `book_id` (`book_id`),
  KEY `author_id` (`author_id`)
) ENGINE=MyISAM;
INSERT INTO `book_author` (`book_id`, `author_id`) VALUES 
(101, 301), (102, 302), (102, 303), (103, 304);


На входе имеем genre_id - 200,201,202,203
На выходе должно получиться такое:
author_id | COUNT(genre_id)
-------------------------------------
       301   |            3
       302   |            2
       303   |            2
       304   |            1


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Akina
Дата 30.4.2013, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Код

select
  a.author_id
, count(a.author_id) cnt 
from
  book_genre g
, book_author a 
where
  g.book_id=a.book_id
and
  g.genre_id in (200,201,202,203) 
group by
  a.author_id;



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
MoLeX
Дата 30.4.2013, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 0
Всего: 140



Akina, спасибо большое. работает как надо  smile 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1004 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.