- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
public function getAllParentCategories($category_id,&$parents = array()) {
$parent_id = $this->db->query("SELECT parent_id FROM " . DB_PREFIX . "category WHERE category_id = '" . (int)$category_id . "'")->row['parent_id'];
if ($parent_id == 0)
return $parents;
else {
$parents[] = $parent_id;
return $this->getAllParentCategories($parent_id,$parents);
}
}
guest 07.06.2016 17:01 # 0
Android991 07.06.2016 17:25 # +2
defecate-plusplus 07.06.2016 17:45 # −1
но пыхобляди продолжают плакать и жрать свой вонючий мускул
guest 07.06.2016 20:12 # −1
https://www.sitepoint.com/hierarchical-data-database-2/
просто пыхобляди так не умеют
defecate-plusplus 07.06.2016 20:56 # −1
ещё скажи, что теперь обновлять его нельзя, потому что пыхомускулоблядь проставила свои какие-то никчемные чиселки, и "перебалансировка" приведет к разрыву жоп?
на что только не пойдут пыхопитушки, лишь бы постгрес не ставить, я хуею
guest 07.06.2016 21:02 # 0
это просто такой способ хранить деревья в реляционках, оптимизированный на быстрое чтение.
ну вообще в нормальных субд конечно есть и XML и деревья и чо хош
а пыховцам от мускуля никуда нельзя
у них без него вордпресс не запускается
defecate-plusplus 07.06.2016 21:21 # −1
теперь вставь ноду дочернюю, скажем, к Red, и получи удовольствие обновить значение rgt для всей таблицы
имхо даже способ, когда ты в идентификаторе записи кодируешь всё её наследие (так, к примеру, успешно работает огромная куча классификаторов) и то проще как для поиска наследников, так и поиска родительских элементов, и обновлять будет только себя, и хранить в записи ненамного больше
т.е. если на пальцах - хранить для записи id_path = '1/14/01/3', который и четко расскажет место в иерархии, и легко позволит поискать детей как тех, у которых их id_path начинается с '1/14/01/3/', саму же колонку правильно поиндексировать
guest 07.06.2016 22:17 # 0
bormand 12.06.2016 05:39 # 0
И чо? В materialized path, про который Ди выше пишет, внезапно, тоже.
inkanus-gray 08.06.2016 01:46 # +1
https://openquery.com.au/graph/doc
OQGRAPH поставляется в коробке с MariaDB.
defecate-plusplus 08.06.2016 08:45 # +1
реализация, где у тебя принципиально разные вещи происходят, если ты для одного и того же запроса указываешь latch=0, latch=1, latch=2 вкупе с другими колонками или без или не указываешь - это какой-то маразм, неужто нельзя было функциями решить, ну или хотя бы имена
inkanus-gray 08.06.2016 17:04 # 0
Могли бы сделать по-другому: вместо виртуального latch во WHERE множить таблицы (например, дописывая к имени таблицы суффикс 0, 1, 2). Но это уже как-то некрасиво.
А как это решить функциями: DIJKSTRA(linkid), BREADFIRST(linkid) etc.?
inkanus-gray 09.06.2016 00:01 # 0
http://dev.mysql.com/doc/internals/en/custom-engine.html
Они реализовали граф как плагин хранилища. Это позволяет перехватывать обращения к виртуальной таблице, но не позволяет вносить изменения в язык.
nik757 09.06.2016 20:39 # 0