Запрос работает верно, но представляет собой "запрос в запросе", что не оч хорошо.
SELECT
t1.*
FROM (
SELECT
t1.`id` `user_id`
, t1.`parent_id` `owner_id`
, t1.`level`
, t2.`product_id`
, t2.`url`
FROM
`user_tree` t1
INNER JOIN
`product` t2 ON t2.`user_id` = t1.`parent_id`
WHERE
t1.`id` = 33 # (USER_ID HERE)
ORDER BY
t1.`level`
) t1
GROUP BY
t1.`product_id`
ORDER BY
t1.`product_id`
Таблицы выглядят так
user_tree
id -- parent_id -- level
product
id -- product_id -- user_id -- url
Какое поведение нужно:
Есть юзеры, они могут приглашать друг друга - то есть дерево юзеров
Есть продукты, они принадлежат юзерам
Нужно для юзера любого уровня вложенности выбрать продукты принадлежащие ему, а если нету, то его родителю, а если нету - то его родителю и тд, но общее количество продуктов должно быть не больше чем количество уникальных product_id, таким образом
"получить продукты для ближайшего родителя".