Общие > Базы данных
Помогите, пожалуйста, организовать запрос.
:
Есть три таблицы:
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:
Привет. В принципе я БД занемаюсь с (поза х 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:
В догонку
Еще раз привет.
Я только-что сам проверил что написал, и скажу тебе следующее: в МюСКЛ 3.х как минимум это работать не будет!(Он не поддерживает вложеных запросов,sub-query(sub-select) называется). Насчет 4.0-го - не знаю, сегодня наверное буду ставить у себя, а там посмотрим, если что- напишу.
А пока тебе прийдется в три подхода искать(если ты работаеш в 3.х) Удачи.
Alexandr:
Вроде так:
SELECT c.name, count(p.*) FROM category c, prod_cat p WHERE p.cat_id=c.id GROUP BY c.name;
Проверь работает, нет.
Maniac:
select c.name,c.count(distinct p.*) FROM category c,prod_cat WHERE p.cat_id=c.id GROUP BY c.name
Навигация
Перейти к полной версии