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

объединение нескольких запросов с Nested sets

(1/1)

golden-den:
Есть структура 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  не нравится

Макс:

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

про названия групп не понял, но вообще такие проблемы решаются с помощь LEFT JOIN
Примерно так
.... 
from $table i, $tableData d
left join price p ON p.item_id=i.cid 
...

golden-den:
спасибо

Навигация

[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 
Перейти к полной версии