MMKit Forums » » ASP.NET » » Select e raggruppamento |
|
|
|
| Autore | Topic: Select e raggruppamento |
|---|
webdevaster
Osservatore

Con noi da: 16-11-2008
Posts: 6
Da:
 | Inviato il: 16-11-2008 10:11
Ciao a tutti!
premetto che sono un po' niubbo sulla programmazione, ho questo problema:
ho una pagina aspx con la quale leggo dei record da un db access, io vorrei però che questi record fossero raggruppati nelle categorie di riferimento, faccio un esempio:
CATEGORIA: 1
PRODOTTO 1
PRODOTTO 2
PRODOTTO 3
CATEGORIA: 2
PRODOTTO 4
PRODOTTO 5
PRODOTTO 6
Ecco, non riesco a capire come fare per avere un risultato simile.
Attendo suggerimenti e vi ringrazio!!
Ciao!!!!
|
Sergionza
Alchimista

Con noi da: 09-09-2005
Posts: 3173
Da: Genova
 | Inviato il: 16-11-2008 15:03
Ciao,
in linea teorica, perchè non conosco bene la sintassi con le query asp, dovresti fare una query che preleva i dati che raggruppi usando un "GROUP BY categoria" nella query....
Ciao!
----------------- Il portale ufficiale dell'oratorio "Fra le Case"
le mie foto su Flickr!
|
webdevaster
Osservatore

Con noi da: 16-11-2008
Posts: 6
Da:
 | Inviato il: 17-11-2008 05:18
ho provato ma mi da errore:
Impossibile eseguire una query che non include l' espressione "nomecategoria" specificata come parte di una funzione di aggregazione....
|
Sergionza
Alchimista

Con noi da: 09-09-2005
Posts: 3173
Da: Genova
 | Inviato il: 17-11-2008 05:39
Ciao allora...
Code:
"SELECT * FROM tabella ..... condizioni .... GROUP BY nomecampocheindicalacategorianeltuodatabase"
|
ovviamente devi adattare la sintassi di asp alla tua query con quello che ho scritto sopra.. tra l'altro è facile che se cerchi nel forum trovi qualcosa di utile...
Ciao!
----------------- Il portale ufficiale dell'oratorio "Fra le Case"
le mie foto su Flickr!
|
webdevaster
Osservatore

Con noi da: 16-11-2008
Posts: 6
Da:
 | Inviato il: 17-11-2008 07:41
ho provato ma mi da:
Impossibile raggruppare in base a campi selezionati con "*".
ho provato anche a mettere al posto di "*" i campi che mi servono ma se faccio così mi da l'errore di prima... io la select comunque la faccio includendo sia la tabella prodotti che la tabella categoria.
|
LudovicoVan
Apprendista Alchimista

Con noi da: 03-06-2004
Posts: 1896
Da: The World's End
 | Inviato il: 17-11-2008 16:35
Se ho capito cosa ti serve, ti basta una:
Code:
SELECT ... ... ORDER BY NomeCategoria, NomeProdotto
|
Le clausole nell'ORDER BY possono essere piu' di una, e vengono considerate in ordine di precedenza. In questo caso hai i record ordinati per nome categoria e, per ciascuna categoria, per nome prodotto.
Se non ho capito, cerca di dare qualche dettaglio in piu'.
-LV
----------------- (Peace X Love] = [++1)
|
webdevaster
Osservatore

Con noi da: 16-11-2008
Posts: 6
Da:
 | Inviato il: 18-11-2008 02:42
in realtà non mi serve ordinarle e basta.. mi serve raggrupparle per categoria...
... quello che sto cercando di ottenere è di far sì che la mia pagina aspx mi restituisse i vari record tutti raggruppati in base alle categorie, faccio un altro esempio un po' più esplicativo (spero):
Ho il db strutturato così:
tabella cibi
che contiente questi dati:
insalata
pesce
carne
pasta
pane
uova
mele
fragole
tabella tipocibi
che contiene questi dati
proteici
vitaminici
carboidratici
Ora, vorrei che quando carico la pagina i dati escano fuori in questo modo:
PROTEICI
pesce, carne, uova
VITAMINICI
insalata, mele, fragole
CARBOIDRATICI
pasta, pane
Invece ora mi escono così:
PROTEICI
pesce
PROTEICI
carne
PROTEICI
uova
VITAMINICI
insalata
VITAMINICI
mele
VITAMINICI
fragole
CARBOIDRATICI
pasta
CARBOIDRATICI
pane
In pratica ora ogni volta che ho cibo mi ripete il nome della categoria io invece vorrei che il nome della categoria venga fuori una volta sola... Spero di essermi spiegato meglio ...
Grazie ancora!!!
[/b]
|
LudovicoVan
Apprendista Alchimista

Con noi da: 03-06-2004
Posts: 1896
Da: The World's End
 | Inviato il: 18-11-2008 14:12
> In pratica ora ogni volta che ho cibo mi ripete il nome della categoria io invece vorrei che il nome della categoria venga fuori una volta sola... Spero di essermi spiegato meglio ...
Si', adesso e' chiaro, ma allora e' "solo" un problema di visualizzazione.
Devi trovare un modo di stampare una categoria solo quando la incontri per la prima volta...
La soluzione dipende fortemente da come stai generando la lista: fai il bind a un repeater, a una grid, oppure cosa? (Mostra la porzione di codice interessata.)
-LV
----------------- (Peace X Love] = [++1)
|
webdevaster
Osservatore

Con noi da: 16-11-2008
Posts: 6
Da:
 | Inviato il: 19-11-2008 04:36
Ok, ti posto giusto la parte della select e la parte dove poi visualizzo i record in maniera semplice... e ti ringrazio per il supporto! :)
Code:
Dim objcmd As New OdbcCommand("select * from cibi, tipocibi where (cibi.idcibi = tipocibi.idcibi) order by tipocibi.idcibi Asc", objcon)
rs = objcmd.ExecuteReader()
Do While rs.Read()
...
...
boxresult.InnerHtml = _
boxresult.InnerHtml & _
rs.Item("tipocibi") & "<br />" & _
rs.Item("cibi")
Loop
| [/code]
|
Sergionza
Alchimista

Con noi da: 09-09-2005
Posts: 3173
Da: Genova
 | Inviato il: 19-11-2008 16:51
| Citazione: |
Devi trovare un modo di stampare una categoria solo quando la incontri per la prima volta...
|
permettetemi e qui si usa di solito il "group by nomecategoria" ....
Ciao!
----------------- Il portale ufficiale dell'oratorio "Fra le Case"
le mie foto su Flickr!
|
Psycho
Membro

Con noi da: 18-09-2006
Posts: 130
Da: Intercity Formia - Roma
 | Inviato il: 20-11-2008 03:24
| Citazione: |
permettetemi e qui si usa di solito il "group by nomecategoria" ....
|
No, in questo caso non c'entra niente.
Come ti suggeriva LudovicoVan devi fare una roba del genere:
Code:
Dim objcmd As New OdbcCommand("select * from cibi, tipocibi where (cibi.idcibi = tipocibi.idcibi) order by tipocibi.idcibi Asc", objcon)
rs = objcmd.ExecuteReader()
Dim tipocibo As String = ""
Do While rs.Read()
...
...
If (rs.Item("tipocibi") <> tipocibo) Then
tipocibo = rs.Item("tipocibi")
boxresult.InnerHtml = _
boxresult.InnerHtml & _
rs.Item("tipocibi") & "<br />"
End If
boxresult.InnerHtml = _
boxresult.InnerHtml & _
rs.Item("cibi") & "<br />"
Loop
|
Controlla solo la sintassi VB, ho scritto di getto, in genere uso C# e non ho verificato.
Ad ogni modo il concetto è quello.
Saluti,
Psycho
|
webdevaster
Osservatore

Con noi da: 16-11-2008
Posts: 6
Da:
 | Inviato il: 20-11-2008 12:59
grazie mille!
provo!!!
... e vi tengo aggiornati!
|
LudovicoVan
Apprendista Alchimista

Con noi da: 03-06-2004
Posts: 1896
Da: The World's End
 | Inviato il: 20-11-2008 13:03
Psycho:
> Ad ogni modo il concetto è quello.
Si', anche se con un codice del genere sembrerebbe ASP classico.
-LV
----------------- (Peace X Love] = [++1)
|
Psycho
Membro

Con noi da: 18-09-2006
Posts: 130
Da: Intercity Formia - Roma
 | Inviato il: 20-11-2008 13:34
| Citazione: | Il 20-11-2008 19:03, LudovicoVan ha scritto:
Psycho:
> Ad ogni modo il concetto è quello.
Si', anche se con un codice del genere sembrerebbe ASP classico.
-LV
|
Infatti ho scritto "una roba del genere", che è come dire "ho 5 minuti tra 10000 cose che sto facendo e questa potrebbe essere una strada, giusto per darti una soluzione veloce".
Ovviamente è modificabile / migliorabile a piacimento.
Tu come avresti fatto per esempio?
Ciao,
Psycho
|
LudovicoVan
Apprendista Alchimista

Con noi da: 03-06-2004
Posts: 1896
Da: The World's End
 | Inviato il: 20-11-2008 13:41
Non mi riferivo alla tua soluzione che va benissimo, mi riferivo al fatto che un codice del genere uno lo scriverebbe in ASP classico: in .Net uno fa il databind a qualche controllo, per esempio un Repeater, e di sicuro non apre e chiude connessioni in-line, ecc.
-LV
----------------- (Peace X Love] = [++1)
|
 | |
|
|
|
- Visualizza la versione da stampa - Segnala questo thread al moderatore - Aggiungi questo thread alla tua lista preferiti [Visualizza] - Non voglio più ricevere nessuna mail riguardo questo thread
|