Forum Webscript.Ru

Общие => Базы данных => Тема начата: от 15 Июля 2002, 21:12:44

Название: Помогите, пожалуйста, организовать запрос.
Отправлено: от 15 Июля 2002, 21:12:44
Есть три таблицы:

category: id(int) | name(varchar) | descript(varchar) | parent(int)
product:   id(int) | name(varchar) | descript(varchar)
prod_cat: prod_id(int) | cat_id(int)

Один и тот же товар может находиться в разных категориях.
Как правильно организовать запрос в БД, чтобы сформировать дерево категорий так:

Продукты(7)
  Фрукты(2)
  Овощи(5)
Бытовая техника(120)
  Телевизоры(20)

и т. д.

Очень признателен за ответы.
Название: Помогите, пожалуйста, организовать запрос.
Отправлено: Serchey от 16 Июля 2002, 00:17:37
Привет. В принципе я БД занемаюсь с (поза х 3-5раз)-вчера,  но всеже попробую сейчас кое-что намутить, правда не знаю, будет ли оно работать,... должно вроде.

Итак, следи за мыслью:
SELECT name,COUNT(*) FROM category WHERE id=(  \\
SELECT cat_id FROM prod_cat WHERE prod_id=(  \\
SELECT id FROM product WHERE name=\'тому,что ты ищеш\'  \\
)  \\
)  \\
GROUP BY name;

Вот так вот. Два вложеных селекта. Напиши, получилось ли.
Название: Помогите, пожалуйста, организовать запрос.
Отправлено: Serchey от 16 Июля 2002, 08:04:04
В догонку
Еще раз привет.
Я только-что сам проверил что написал, и скажу тебе следующее: в МюСКЛ 3.х как минимум это работать не будет!(Он не поддерживает вложеных запросов,sub-query(sub-select) называется). Насчет 4.0-го - не знаю, сегодня наверное буду ставить у себя, а там посмотрим, если что- напишу.
А пока тебе прийдется в три подхода искать(если ты работаеш в 3.х) Удачи.
Название: Помогите, пожалуйста, организовать запрос.
Отправлено: Alexandr от 16 Июля 2002, 08:19:25
Вроде так:
SELECT c.name, count(p.*) FROM category c, prod_cat p WHERE p.cat_id=c.id GROUP BY c.name;

Проверь работает, нет.
Название: Помогите, пожалуйста, организовать запрос.
Отправлено: Maniac от 16 Июля 2002, 11:03:36
select c.name,c.count(distinct p.*) FROM category c,prod_cat WHERE p.cat_id=c.id GROUP BY c.name
Название: Помогите, пожалуйста, организовать запрос.
Отправлено: Serchey от 16 Июля 2002, 22:42:06
Привет, это опять я.
Значит, ставил я 4.02 - там саб-селекты тоже не фурычят, говорят,  что будут реализованы с версии 4.1, а пока вот тебе рабочий и провереный запрос на нужный товар:

select product.name as \'name\', product.description as \'description\', category.name as \'category\',count(*) as \'num\' from category, prod_cat, product where category.id=prod_cat.cat_id and prod_cat.prod_id = product.id and product.name=\'somthing needed\' group by category.name;

Доработай как надо, я писал чтоб ты понял.
Удачи.