Я хотел бы создать функцию mysql, которая может найти всех связанных предков, используя столбец related
в таблице category
, а затем использовать все идентификаторы этих предков (детей, внуков ...), включая себя, чтобы найти все экземпляры эти идентификаторы в listing_category
с использованием столбца category
.
Категория
ID, Related
1,0
2,1
3,1
4,1
5,0
6,5
7,1
8,7
9,7
10,1
Если я выберу 1, то 2,3,4,7,10 - его дети, а 8,9 - его внуки.
listing_category
Category
1
1
2
3
3
5
6
9
7
7
Итак, теперь я хочу создать функцию MySql, которая может считать все экземпляры 1,2,3,4,7,10,8,9 в другой таблице с именем listing_category
create function listing_count(ID int(11)) returns int(11)
begin
declare count int(11);
set count=(select count(*) from listing_category where category=ID);
while (select id from category where related=ID) as childID and count<100 do
set count=count+listing_count(childID);
end while;
return count;
end
Итак, listing_count(1)
найдет всех родственников 2,3,4,7,10,8,9 внутри category
, а затем посчитает все экземпляры 1,2,3,4,7,10,8,9 внутри listing_category
. Таким образом, счет 8 будет возвращен в этом примере.
Возможно с хранимыми процедурами mysql?