|
а тогда так:
select c.*,sc.* from cat as c
inner join subcat as sc
on c.id = sc.cat_id
order by fileds
Ну а дальше как тебе удобно. Можно, например, при парсинге сразу сформировать карты(хеши), типа:
categories = array("catid"=>id,...,"subcats"=>array(...));
subcats = ("id"=>id,...);
Можно это сделать потом, опять же рекурсией. Как? Решение я приводил в теме про деревья. Но там задача даже немного сложнее была, там нужно было сначала проставить связи id->parentid, а у тебя они уже есть из запроса(можно ведь сделать и так: select c.cat_id as catid, cs.subcat_id as subcat_id). Вобщем вариантов море.
На худой конец, уж совсем тривиальное решение.
select * from cats
foreach(...) // для каждой найденой категории в цикле
select * from subcats where subcats.cat_id=catid
Но тогда это будет: (n-найденных категорий+1) запросов, а это гарантированно дольше, чем сделать один запрос и парсить данные.
__________________
убрано по просьбе администратора
|