Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Recuperare gli articoli presenti in una sottocategoria anche se si cli...
martedì 20 novembre 2012 - 18.06
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 3.5
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
mar 20 nov 2012 - 18:06
Ciao ragazzi,
il titolo forse non è chiarissimo cerco di spiegarmi meglio.
Ho una tabella con le categorie con la classica situazione di padre figlio con un l'id del genitore tutto in questa tabella.
Poi c'è la tabella dei prodotti che contiene ovviamente l'id della categoria di appartenenza.
Adesso immaginiamo che ho una situazione di questo tipo:
Categoria A
--Categoria B
----Categoria C
Ed ho i prodotti inseriti sia all'interno di Categoria B che all'interno di CAtegoria C.
Come posso fare a far visualizzare tutti i prodotti di B e di C anche solo cliccando su A?
Grazie mille
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
mar 20 nov 2012 - 18:25
>Adesso immaginiamo che ho una situazione di questo tipo:
>Categoria A
>--Categoria B
>----Categoria C
>Ed ho i prodotti inseriti sia all'interno di Categoria B che
>all'interno di CAtegoria C.
>
>Come posso fare a far visualizzare tutti i prodotti di B e di
>C anche solo cliccando su A?
di B e di c che appartengono anche ad A? visto che clicchi su A giusto?
Riccardo D'Aria
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
mar 20 nov 2012 - 19:05
sì sì esatto sono sottocategorie di A quindi rientrano anche in A oltre che in B e in C
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
mar 20 nov 2012 - 19:13
c'è qualcosa che non quadra,
se un articolo appartiene ad A,B e C,
se clicco su cat A vedro tutti gli articoli di A, allo stesso tempo quelli di A che appartengono anche a C e B li ho già presi perché appartengono ad A.
O sono io che non ho capito?
Ciao
Riccardo D'Aria
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
mar 20 nov 2012 - 19:19
Faccio un esempio pratico così da spiegarmi meglio:
Frigoriferi
-- Frigoriferi a due ante
---- Frigoriferi classe A++
---- Frigoriferi classe A+++
-- Frigoriferi ad una anta
Come vedi sopra ho una Categoria principale (Frigoriferi) all'interno della quale ci sono due sottocategorie (Frigoriferi a due e Frigoriferi ad una anta), sotto a Frigoriferi a due ante ci sono altre due sottocategorie (classe A++ e classe A+++).
Adesso io ho articoli sia all'interno di classe A++ che all'interno di classe A+++, però vorrei che cliccando su FRIGORIFERI, quindi la sua categoria madre, vengano visualizzati tutti i prodotti presenti sia in classe A++ che in classe A+++.
Spero di esseremi spiegato meglio :D
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
mar 20 nov 2012 - 19:26
TI PRENDI TUTTE LE SUBCAT DI FRIGORIFERI
E PER OGNI UNA DI ESSE NE ESTRAI GLI ARTICOLI.
cAIO
Riccardo D'Aria
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
mar 20 nov 2012 - 19:32
Ti ringrazio per l'aiuto, ma non credo proprio possa essere questa la soluzione.
Se dovessi ciclare tutte le possibili sottocategorie rallenterei troppo il caricamento.
Qualcuno sa dirmi se esiste una soluzione a livello di query SQL che è possibile utilizzare?
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
mar 20 nov 2012 - 19:51
>Qualcuno sa dirmi se esiste una soluzione a livello di query SQL che è possibile utilizzare?
a livello di query direttamente non credo, ma una vista è una buona soluzione
Devi crearti una vista sul DB che prenda per ogni categoria tutti gli articoli appartenenti alle sue sub categorie.
Join etc.....
Ciao
Riccardo D'Aria
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
mar 20 nov 2012 - 19:55
Questo mi sembra più interessante.
Siccome non ho mai lavorato con le viste, sapresti indirizzarmi su come poter fare?
Non tanto sulla creazione in sè, ma proprio sul discorso di ciclare tutte le categorie e sottocategorie.
Grazie mille
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
mar 20 nov 2012 - 20:11
>Questo mi sembra più interessante.
>
>Siccome non ho mai lavorato con le viste, sapresti indirizzarmi
>su come poter fare?
>Non tanto sulla creazione in sè, ma proprio sul discorso di ciclare
>tutte le categorie e sottocategorie.
Non si tratta di eseguire un ciclo di elaborazione via codice.
Una vista è una tabella del database.
Essa non è altro che l'unione/intersezione di due o più tabelle secondo le relazioni che vi intercorrono.
Una volta creata sul db, è lui stesso che popola la tabella (vista) con tempi decisamente brezi se rapportati a quelli di una pura elaborazione via codice e stringhe SQL.
Potresti cominciare da qui:
http://www.html.it/pag/31835/le-viste1/
e poi a seconda del DB che usi affinare lo studio per arrivare alla creazione di una vista sul tuo DB.
CIAO fammi sapere
Riccardo D'Aria
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
mer 21 nov 2012 - 08:58
sì sì questo è chiaro, mi riferivo proprio al codice della SQL.
Ritorno al problema iniziale:
come faccio a selezionare tutti i prodotti che appartengono ad una macrocategoria anche se all'interno di "n" sottocategorie?
Che sia vista o query normale il codice da scrivere è sempre quello, mi servirebbe sempre una mano per raggiungere questo risultato.
Grazie mille
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
mer 21 nov 2012 - 09:08
>Ritorno al problema iniziale:
>come faccio a selezionare tutti i prodotti che appartengono ad
>una macrocategoria anche se all'interno di "n" sottocategorie?
>Che sia vista o query normale il codice da scrivere è sempre
>quello, mi servirebbe sempre una mano per raggiungere questo
>risultato.
Il codice SQL per la creazione di una Vista non è sempre lo stesso.
In esso si specificano: le tabelle interessate, i campi che si vogliono vedere, i campi su cui si basa l'intersezione e/o unione fra le tabelle in base ad uno o più campi.
é una cosa che devi studiare e costruire tu.
Io che ne so quali sono le tabelle, le relazioni ed i nomi dei campi. Più che passarti dei link da dove avviare lo studio non potrei fare.
OK ;-)
Ciao
Riccardo D'Aria
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
mer 21 nov 2012 - 09:53
Ok ti ringrazio, ma la mia necessità è proprio quella di ricevere un aiuto CONCRETO sulla creazione del codice.
La struttura delle tabelle è semplicissima:
tab_categorie
ID|PARENT|NOME
tab_articoli
ID|id_cat|NOME
Sapendo questo, come posso costruire una query SQL oppure una VISTA che mi consenta di visualizzare tutti i prodotti che appartengono alle categorie figlie anche se ho cliccato su di una categoria padre?
Grazie mille
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
mer 21 nov 2012 - 10:03
>Ok ti ringrazio, ma la mia necessità è proprio quella di ricevere
>un aiuto CONCRETO sulla creazione del codice.
Volentieri
>
>La struttura delle tabelle è semplicissima:
>tab_categorie
>ID|PARENT|NOME
>
>tab_articoli
>ID|id_cat|NOME
da come vedo hai la categoria e gli articoli, non vedo sub_categorie.
il campo PARENT cosa contiene?
>Grazie mille
prego
Riccardo D'Aria
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
mer 21 nov 2012 - 10:11
il campo parent è la macrocategoria di appartenenza, ricordi l'esempio che ti ho fatto delle categorie e sottocategorie?
Sono tutte all'interno di un'unica tabella, per ogni record, se c'è, viene indicato il padre all'interno del campo PARENT.
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
mer 21 nov 2012 - 10:14
direi che seguire via post una cosa del genere è alquanto complicato e lungo.
Torno a dirti di leggere e studiare le viste o Join.
Ciao
Riccardo D'Aria
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
mer 21 nov 2012 - 10:19
ok, grazie le studierò sicuramente.
C'è qualcun altro che è in grado di darmi una mano su questo problema?
Grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
sab 24 nov 2012 - 02:09
>C'è qualcun altro che è in grado di darmi una mano su questo
>problema?
ciao, io ho in produzione la stessa casistica:
calcio
- serie a
-- juve milan
-- parma inter
- premiership
-- manchester utd arsenal
-- chelsea tottenham
ecc..
e non ho usato la parent child come te, perchè è un modo per salvare semplicemente le informazioni gerarchiche ma è un metodo da non seguire se devi fare letture di profondità come quelle che servono a te. Perchè devi entrare nel merito della ricorsione, utilizzando, in SQL Server, le Common Table Expression.
Ci sono post sulla ricorsione con le CTE che ti allego alla fine, ma prima ti consiglio di utilizzare il pattern chiamato Materialized Path.
Con esso vai a segnare ogni elemento con un campo stringa che contiene la gerarchia (un po' come le cartelle di windows), trasformando la parent child in una cosa del genere:
calcio 001
- serie a 001.001
-- juve milan 001.001.001
-- parma inter 001.001.002
- premiership 001.002
-- manchester utd arsenal 001.002.001
-- chelsea tottenham 001.002.002
avendo quel campo, poi basterà fare:
SELECT
campi
FROM
TuaGerarchia
WHERE
MPath LIKE '001%'
ecco che avrai tutti i record (nel mio caso) di "calcio".
Puoi applicare il campo già ora, anche se hai una Parent Child, aggiungendolo con una update immediatamente successiva che usa l'id ed un progressivo per darti l'mpath desiderato. Oppure puoi anche esportare i dati in una ulteriore tabella speculare ma con l'mpath, per utilizzare solo quella nelle letture, vedi tu.
Per le CTE ricorsive, leggi qui:
http://msdn.microsoft.com/it-it/library/ms186243
(v=sql.105).aspx
>Grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
dom 25 nov 2012 - 16:26
Ciao Alx,
perfetto era proprio l'aiuto che cercavo!
Sei stato chiarissimo sul concetto da andare ad applicare, l'unica cosa che non ho capito è come creare il path.
Mi spiego meglio:
quando il cliente utilizza il pannello di controllo per creare le categorie e le sottocategorie, contestualmente devo creare anche la procedura per inserire nell'apposito campo il valore del Mpath? Cioè lo gestisco tutto in maniera autonoma se ho capito bene, non bisogna appoggiarsi ad oggetti o librerie giuste?
Grazie mille!
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
dom 25 nov 2012 - 16:45
>quando il cliente utilizza il pannello di controllo per creare
>le categorie e le sottocategorie, contestualmente devo creare
>anche la procedura per inserire nell'apposito campo il valore
>del Mpath? Cioè lo gestisco tutto in maniera autonoma se ho capito
>bene, non bisogna appoggiarsi ad oggetti o librerie giuste?
devi farlo tu, una semplice funzione di generazione di una stringa. Considera che non è male se lasci gap tra un valore e l'altro. Tipo una cat è 001 e quella dopo, per la funzione, potrebbe essere 005 ad esempio.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
dom 25 nov 2012 - 17:23
ok chiarissimo!
Domani mi metterò al lavoro ti farò sicuramente sapere!
Grazie mille!
Ciao ciao
Guido
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
dom 25 nov 2012 - 22:53
>ok chiarissimo!
>Domani mi metterò al lavoro ti farò sicuramente sapere!
mi raccomando, se ci fai sapere e se funziona, accetta la risposta così chiudiamo il post
ciao!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
lun 17 dic 2012 - 14:22
Anche se con un pò di ritardo ho potuto provare quello che mi hai consigliato, ed ha funzionato alla grande!
Grazie mille!
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 17 dic 2012 - 14:29
>Anche se con un pò di ritardo ho potuto provare quello che mi
>hai consigliato, ed ha funzionato alla grande!
ottimo
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !