Ciao a tutti! Sto implementando un sistema di e-commerce in java, open source. Ancora non ho una release ufficiale, ma credo che per meta' novembre apriro' una pagina su sourceforge con la prima beta del progetto. In questo momento sto implementando il carrello prodotti. Al di la dei dettagli prodotti-categorie (i vari attributi di uno e dell'altro) che saranno presumibilmente gestiti via xml/beans, ho una difficolta' nel trovare una logica per la divisione dei prodotti in diverse sotto-categorie. Generalmente, ogni prodotto e' inserito in una categoria, quindi (esempio rapido) una scheda video fa parte della categoria piu' generale hardware, una matrox e' una scheda video (sarebbe una categoria di fornitura in realta', ma semplifichiamo), quindi si ha la seguente sequenza: computer +----- hardware + | +---- video + | +-- matrox | +---- audio etc.. Il problema che ho e' banale, si tratta di capire quando finiscono le categorie e quando cominciano i prodotti. Ho risolto in questo modo: nel database (PostgreSQL), ho una tabella categorie ed una prodotti: CREATE TABLE categories ( cat_id SERIAL PRIMARY KEY CHECK (cat_id > 0), __parent_node INTEGER DEFAULT(0), cat_image BYTEA ); CREATE TABLE products ( product_id SERIAL PRIMARY KEY CHECK (product_id > 0), cat_id INTEGER REFERENCES categories, image BYTEA ); In realta' in queste tabelle sono inseriti solo dati statici, le descrizioni, i nomi e tutto cio' che varia a seconda della lingua (o del giorno, come il prezzo!) e' in tabelle separate, per gestire la localizzazione. In categories c'e' '__parent_node', che e' un riferimento all'id (cat_id) del nodo padre della stessa tabella categories. Quindi, nel caso di prima, computer.(cat_id, __parent_id) = (1, 0); hardware.(cat_id, __parent_id) = (2, 1); video. (cat_id, __parent_id) = (3, 2); Mentre matrox (product_id, cat_id) = (1, 3); Il codice che determina che cosa si deve vedere fa questo: 1. lista tutte le categorie di base (__parent_id = 0) 2. l'utente clicca su una categoria (cat_id = 1) 3. avviene il listing di tutte le sotto-categorie di cat_id = 1 (select ... __parent_id = 1) Questo viene fatto fin quando select non restituisce null (in java un ResultSet::next() restituisce false, o zero se non ci sono elementi che soddisfano la query, e' anche possibile usare ResultSet::wasNull()). Se ResultSet::next() == 0, viene fatto un controllo nella tabella prodotti (in pseudo sql): SELECT p.product_id FROM products as p WHERE p.cat_id='${cat_id}'; Questo approccio funziona bene, ma mi lascia due connessioni al database, che vorrei evitare. Secondo voi va bene cosi', o c'e' una soluzione migliore (sicuro che c'e'! :) che posso usare? C'e' una sola query (un join? ...) che mi dia gia' il risultato che cerco? Grazie dell'aiuto escusate per la lunghezza del post. Mario -- Per iscriversi (o disiscriversi), basta spedire un messaggio con SOGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx