salve a tutti,
dovrei realizzare un e-commerce in php che naturlamente avrà delle
categorie e sottocategorie annidate tra loro... le sottocategorie
devono poter essere infinite e non prestabilite, cosi da poter dare al
cliente piena libertà di tutte le categorie e stottocategorie da
creare...
ho letto il metodo utilizzato in questo link ma non so se può andar
bene e se ne esiste un'altro migliore.. voi che ne dite??
http://www.bigthink.it/sql/gestire-i...egorie-in-sql/
in ogni caso, seguendo il tutorial sopra, non ho capito una cosa....
nell'esempio viene creato un insieme e tanti sottoinsiemi e ad ognuno
viene attribuito un numero left e right per capire a quele sotto
insieme appartiene...
es.
+-------------+----------------------+-----+-----+
| category_id | name | lft | rgt |
+-------------+----------------------+-----+-----+
| 1 | ELECTRONICS | 1 | 20 |
| 2 | TELEVISIONS | 2 | 9 |
| 3 | TUBE | 3 | 4 |
| 4 | LCD | 5 | 6 |
| 5 | PLASMA | 7 | 8 |
| 6 | PORTABLE ELECTRONICS | 10 | 19 |
| 7 | MP3 PLAYERS | 11 | 14 |
| 8 | FLASH | 12 | 13 |
| 9 | CD PLAYERS | 15 | 16 |
| 10 | 2 WAY RADIOS | 17 | 18 |
+-------------+----------------------+-----+-----+
e se per caso io volessi aggiungere una nuova sottocategoria a
TELEVISIONS?? cosa dovrei fare?? dovrei ogni volta aggiornare i left e
right di tutti i sotto insiemi??
cioè con una sottocategori in più
ELECTRONICS diventerebbe 1 - 21
TELEVISIONS DIVENTEREBBE 2 - 10
altra domanda veloce
tutto sommato il metodo sopra citao potrebbe andar bene, mi servirebbe
poter anche effetuare una select che mi vada a prendere solo i sotto
insiemi di una categoria..
es.
io ho la sotto categoria MP3 PLAYERS con id 7, io vorrei poter
visualizzare i sottoinsiemi solo di quella categoria ed evitare di
visualizzare eventuali sottoinsiemi gerarchici dei sottoinsieme di MP3 PLAYERS.. spero di
essermi spiegato bene
1, 'ELECTRONICS', 1, '22'
2, 'TELEVISIONS', 2, '9'
3, 'TUBE', 3, '4'
4, 'LCD', 5, '6'
5, 'PLASMA', 7, '8'
6, 'PORTABLE ELECTRONICS', 10, '21'
7, 'MP3 PLAYERS', 11, '16'
8, 'FLASH', 12, '15'
9, 'CD PLAYERS', 17, '18'
10, '2 WAY RADIOS', 19, '20'
15, '8GB', 13, '14'
16, 'INFORMATICA', 23, '24'
in questo caso c'è solo un sotto insieme di MP3 PLAYERS che è FLASH. A
sua volta FLASH ha un suo sotto insieme che è 8GB ma a me non
interessa visualizzarlo..
eseguo questa select ma mi visualizza cmq tutti i figli gerarchici
SELECT node.category_id as id, node.name AS name FROM nested_category
AS node, nested_category AS parent WHERE parent.category_id = 7 and
node.lft BETWEEN parent.lft + 1 AND parent.rgt GROUP BY node.name
ORDER BY node.lft

Rispondi quotando