Автор Тема: объединение нескольких запросов с Nested sets  (Прочитано 4537 раз)

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

Оффлайн golden-den

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 118
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kosmos13.narod.ru
Есть структура Nested sets - каталог товаров.
На каждый товар цена зависит от еще одного параметра, т.е. цен у каждого товара много.
При выводе элементов каталога хочу сразу одним запросом находить цены (min и max), только выводить надо все товары и без цены тоже (цена есть не у всех элементов, да и элементов,отвечающих за названия групп не может быть цены)

талица price = {id, item_id, color_id, price}

запрос1  - вывод элементов каталога
select i.cid, d.title, d.type
from $table i, $tableData d
where i.cleft > $leftId and i.cright < $rightId and i.clevel=$level+1 and i.cid=d.cid
order by i.cleft

связь с таблицей Price по столбцу item_id (id товара из каталога)
Если делать объединение запросов,

select i.cid, d.title, d.type, min(p.price) as pmin, max(p.price) as pmax
from $table i, $tableData d, price p
where i.cleft > $leftId and i.cright < $rightId and i.clevel=$level+1 and i.cid=d.cid
and p.item_id=i.cid
group by i.cid
order by i.cleft

то на выходе ТОЛЬКО те строки, у которых в таблице есть цена. Пропадают сразу все товары без цены и названия групп.


Как сделать, чтобы для каждой строки первого запроса, находились (!если есть) min(price) max(price)?

Вариант для каждой строки длать Новый запрос в таблицу Price  не нравится

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
объединение нескольких запросов с Nested sets
« Ответ #1 : 16 Июля 2007, 12:02:02 »
Цитировать
golden-den:
то на выходе ТОЛЬКО те строки, у которых в таблице есть цена. Пропадают сразу все товары без цены и названия групп.

про названия групп не понял, но вообще такие проблемы решаются с помощь LEFT JOIN
Примерно так
.... 
from $table i$tableData d
left join price p ON p
.item_id=i.cid 
...
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн golden-den

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 118
  • +0/-0
  • 0
    • Просмотр профиля
    • http://kosmos13.narod.ru
объединение нескольких запросов с Nested sets
« Ответ #2 : 16 Июля 2007, 15:17:08 »
спасибо

 

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