Автор Тема: Помогите, пожалуйста, организовать запрос.  (Прочитано 2991 раз)

0 Пользователей и 1 Гость просматривают эту тему.

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

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

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Привет. В принципе я БД занемаюсь с (поза х 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;

Вот так вот. Два вложеных селекта. Напиши, получилось ли.
« Последнее редактирование: 16 Июля 2002, 08:05:11 от Serchey »

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
В догонку
Еще раз привет.
Я только-что сам проверил что написал, и скажу тебе следующее: в МюСКЛ 3.х как минимум это работать не будет!(Он не поддерживает вложеных запросов,sub-query(sub-select) называется). Насчет 4.0-го - не знаю, сегодня наверное буду ставить у себя, а там посмотрим, если что- напишу.
А пока тебе прийдется в три подхода искать(если ты работаеш в 3.х) Удачи.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Вроде так:
SELECT c.name, count(p.*) FROM category c, prod_cat p WHERE p.cat_id=c.id GROUP BY c.name;

Проверь работает, нет.
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
select c.name,c.count(distinct p.*) FROM category c,prod_cat WHERE p.cat_id=c.id GROUP BY c.name
TANSTAAFL

Оффлайн Serchey

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 216
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.rivne.ukrtelecom.ua
Привет, это опять я.
Значит, ставил я 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;

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

 

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