Общие > Базы данных

Помогите, пожалуйста, организовать запрос.

(1/2) > >>

:
Есть три таблицы:

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

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии