dla każdej gałązki mam ciąg obrazujący kolejnych rodziców danej gałązki w drzewie: "|0|3|6|15|20|" - 0 oznacza korzen, 20 gałązkę, a przykładowo 15 bezpośredniego rodzica gałązki...
numery w tym przypadku oznaczają identyfikator gałązki - mam sobie tabelę, w której są dodatkowe informacje na temat tych gałązek (przykładowo ilość wiszących na nich owoców oraz wspomniany ciąg obrazujący rodziców).
i teraz mój problem - przy dodawaniu "owocu" do jakiejś gałązki, chciałbym, aby wartość "ilość owoców" była zwiększana w danej gałązce oraz we wszystkich jej rodzicach...
struktura tabeli i przykładowe kilka wpisów (już nie "obrazowo", tylko tak jak jest ;)):
CREATE TABLE `gotow_kat` (
`id` int(11) NOT NULL auto_increment,
`nazwa` char(64),
`parent` int(11),
`path` text,
`cnt` int(11),
PRIMARY KEY (`id`)
);
INSERT INTO `gotow_kat` VALUES (1, 'gimnazjum', 0, '|0|1|', 4);
INSERT INTO `gotow_kat` VALUES (2, 'polski', 1, '|0|1|2|', 0);
INSERT INTO `gotow_kat` VALUES (3, 'odrodzenie', 2, '|0|1|2|3|', 0);
INSERT INTO `gotow_kat` VALUES (4, 'wiersze', 3, '|0|1|2|3|4|', 0);
INSERT INTO `gotow_kat` VALUES (9, 'matematyka', 8, '|0|8|9|', 2);
INSERT INTO `gotow_kat` VALUES (8, 'liceum', 0, '|0|8|', 1);
jak to zrobić jednym zapytaniem bez robienia przydluuuugiej listy po WHERE?
sprawę by rozwiązało zapytanie:
$q = mysql_query('SELECT path FROM gotow_kat WHERE id = '.$id_kategorii_do_ktorej_dodawany_jest_item);
$r = mysql_fetch_array($q);
$path = $r['path'];
mysql_query('UPDATE gotow_kat SET cnt = cnt + 1 WHERE "'.$path.'" LIKE %id%');
lub
mysql_query('UPDATE gotow_kat SET cnt = cnt + 1 WHERE "'.$path.'" LIKE "%"id"%"');
lub
mysql_query('UPDATE gotow_kat SET cnt = cnt + 1 WHERE "'.$path.'" LIKE "%"+id+"%"');
czy jakkolwiek inaczej
tyle ze troche nie berdzo mysqlowe jest :]