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
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Creazione View che raggruppa piu' campi in uno solo
giovedì 19 novembre 2009 - 11.06
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Teo
Profilo
| Junior Member
61
messaggi | Data Invio:
gio 19 nov 2009 - 11:06
Ciao a tutti, spero si capisca qualcosa dal titolo che ho messo.
Ho una tabella cosi' composta:
CLIENTE | PROGRIGA | NOTA
quindi per ogni cliente posso avere N righe.
Avrei necessita' di creare una vista che mi raggruppi tutte le note in un campo solo, in modo da avere un'unica riga per ogni cliente.
Non avrei pero' idea di come farlo su una vista...
avete qualche suggerimento?
Grazie.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
gio 19 nov 2009 - 11:14
>Non avrei pero' idea di come farlo su una vista...
avete
>qualche suggerimento?
Probabilmente si potrebbe fare qualcosa del genere tramite il pivot, ma secondo me è ostico.
Io farei due query, una sugli utenti e una sui campi nota.
E poi con due cicli for o foreach cicli sugli utenti e all'interno sulle note, filtrando per utente, e ti costruisci tu la stringa con dentro tutte le note.
Esempio
Utenti
1 David
2 Mario
Note
1 Nota1
1 Nota2
1 Nota3
2 Nota4
2 Nota5
ciclo su utenti
utente 1
filtro su note per utente 1
ciclo su note
note+= valore
alla fine note avrà questo contenuto "nota1, nota2, nota3"
mentre per l'utente 2 sarà "nota4, nota5"
Penso si sia capito.
Ciao
David De Giacomi | <empty>
http://blogs.dotnethell.it/david/
Teo
Profilo
| Junior Member
61
messaggi | Data Invio:
gio 19 nov 2009 - 11:41
Grazie, + o - credo di aver capito.
Ma posso ciclare all'interno di una view, con un WHILE od un FOR?
Teo
Profilo
| Junior Member
61
messaggi | Data Invio:
gio 19 nov 2009 - 14:56
Al momento ho risolto in maniera diversa.
Quando ho un attimo provo a fare una funzione che cicla e ricava in un'unica variabile il contenuto di tutte le note, per poi provare ad inserirla in una view e vedere quanto ne risentono le prestazioni.
Grazie a tutti.
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 19 nov 2009 - 21:44
>Al momento ho risolto in maniera diversa.
Come?
>Quando ho un attimo provo a fare una funzione che cicla e ricava
>in un'unica variabile il contenuto di tutte le note, per poi
>provare ad inserirla in una view e vedere quanto ne risentono
>le prestazioni.
Quando è possibile preferisco utilizzare tecniche alternative a cursori/cicli dato che in questo modo vincoli il DB Engine a ragionare a livello di riga, snaturando le potenzialità offerte da un RDBMS.
Una tecnica valida per SQL Server 2005 o superiore prevede di sfruttare le espressioni XPath mediante l'utilizzo della clausola FOR XML PATH:
http://groups.google.it/group/microsoft.public.it.sql/msg/8e03d60e1871fb41?hl=it
>Grazie a tutti.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Teo
Profilo
| Junior Member
61
messaggi | Data Invio:
gio 19 nov 2009 - 21:59
Ciao Grande Lorenzo!
Ho risolto in maniera non proprio ortodossa, ovvero sulla join della tabella n a molti ho aggiunto la clausola ProgRiga = 1, e costruendo diversamente il report su cui si basava la view: non sarebbe proprio esatto come metodo, perche' potrei avere note con progressivo di riga superiore a 1, nel caso in cui sia stata cancellata proprio la prima, pero' altrimenti non sapevo come uscirne velocemente.
Sono su SQL 2000 purtroppo, quindi non posso provare quanto da te suggerito.
Quindi l'unica soluzione corretta, e' quella di creare una funzione con un ciclo?
Grazie, ciao.
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 19 nov 2009 - 22:10
>Sono su SQL 2000 purtroppo, quindi non posso provare quanto da
>te suggerito.
>Quindi l'unica soluzione corretta, e' quella di creare una funzione
>con un ciclo?
Questo thread solleticherà di certo il tuo intelletto:
http://groups.google.it/group/microsoft.public.it.sql/browse_frm/thread/25ec5df1a3d03ce9
>Grazie, ciao.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Teo
Profilo
| Junior Member
61
messaggi | Data Invio:
gio 19 nov 2009 - 22:20
Grazie mille, vado a studiarmi il tutto.
Ciao.
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 !