запрос: список с дополнительной таблицей

_Leonchik_

Новичок
запрос: список с дополнительной таблицей

имеется таблица с некот. списком.
Понадобилось елементы списка сгруппировать в некот. листинг, причем этот родитель должен иметь тот же набор данных.
Поставил поле parent_id в этой же таблице(пока не вижу смысл его вывести в отдельную таблицу).
глубина вложенности 1(строго):
PHP:
 prod_id, name, parent_id, еще, 10 - полей.
Встала задача чтобы зарегенный чел на сайте мог сохранять (для дальнейшего удобного просмотра) элементы данного списка.
Причем ему надо сохранить только корневой элемент списка, или только сам елемент, если он не входит ни к кому в список.
PHP:
 fav_id, prod_id, user_id, date_set
И тут проблема при выводе.
Могу забрать или только сгруппированные елементы, а самостоятельные не берутся, или наоборот.
Пробывал и с доп. джойном дозабирать элементы, но при выводе не понятно. где корневой элемент, а где его дети, или где отдельные элемент (элементы затираются в массиве), + паджинатор к этому всему надо приклеить. (про оптимизацию пока молчу)

PHP:
SELECT C.id, C.parent_id, C.title, F.*, P.id, P.parent_id, P.title
FROM catalog as C
LEFT JOIN catalog AS P ON(P.parent_id = C.id)
INNER JOIN favorites AS F ON(F.prod_id = C.id)
WHERE F.user_id = 1818
Какие есть идеи? Кто с подобным сталкивался, как решали?

-~{}~ 16.06.08 17:00:

поскольку проблема в выводе, можно было вы и на стороне пхп пересобрать массив, но как тогда быть с разбивкой на страницы?
 

amadeus

Новичок
Сумбурно немного изложено, я так понял, что в результате существующего запроса не устраивает то, что в нем не будет отдельных записей для тех "родительских" элементов, у которых есть "дочерние". Если правильно понял, то попробуй так:
[SQL]
SELECT C.prod_id, C.parent_id, C.name, F.*, P.name
FROM catalog as C
INNER JOIN
favorites as F
ON C.prod_id = F.prod_id OR C.parent_id = F.prod_id
LEFT JOIN
catalog as P
ON C.parent_id=P.prod_id
ORDER BY F.prod_id, C.parent_id
[/SQL]
Если не правильно задачу понял, извиняюсь...
 
Сверху