SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 25.05.2010 19:42:40

palesika2002
Участник
Зарегистрирован: 25.05.2010
Сообщений: 1

Помогите с запросом

В общем есть две таблицы - рубрики и фирмы. Рубрики связаны с фирмами связью многие ко многим(через таблицу). У рубрики есть поле регион. Надо с помощью одного запроса вывести ид рубрики, и поле которое будет включать в себя ид региона и счетчики фирм для каждого региона. Все что у меня получилось:
SELECT react_id, GROUP_CONCAT(count_region) FROM (

SELECT rubric.react_id AS react_id,region COUNT(region) AS count_region
FROM rubric, firm, relations
WHERE 1
  AND firm.react_id = relations.react
  AND rubric.react_id = relations.object
GROUP by rubric.react_id, region
) firms

GROUP BY react_id

Дальше знаний не хватает. Может кто знает какие-то новшества?

Отредактированно palesika2002 (25.05.2010 19:43:24)

Неактивен

 

#2 25.05.2010 21:00:49

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

Re: Помогите с запросом

Если я правильно понял вашу мысль, то:

SELECT rubric.react_id, group_concat(rubric.region, (SELECT count(`object`) FROM relations WHERE rubric.react_id = relations.object)) `поле которое будет включать в себя ид региона и счетчики фирм для каждого региона` FROM rubric;

Неактивен

 

#3 25.05.2010 21:11:39

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Помогите с запросом

То, что смущает сразу, — WHERE 1 и FROM firm. Ни то, ни другое не нужно.
Особенно второе, т.к. его оптимизатор не выкинет.

Потом несколько смущает организация данных — регион к рубрике не отно-
сится обычно, это независимый словарик. Если это осмысленная денорма-
лизация, то, возможно, она не очень удачная. Я бы регион в relations воткнул.
Он туда по смыслу хорошо встраивается, ну и запрос будет на порядок проще.

Если же организацию данных брать as-is, то да, как-то так. Наверное, еще
где-то CONCAT пропустили, если словесное описание запроса правильное.

Неактивен

 

Board footer

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