Query di "raggruppamento"

mercoledì 11 febbraio 2009 - 18.00

pico81 Profilo | Newbie

Ho una tabella contenente i codici degli articoli, ma ogni articolo ha più codici, quindila tabella Codici è cosi strutturata:

CodiceID Codice ArticoloID
1 codice1 articolo1
2 codice2 articolo1
3 codice3 articolo1
4 codice1 articolo2
5 codice2 articolo2

voglio ottenere dalla query una stringa con questa forma: articolo1 - codice1,codice2,codice3
ovvero tramite la query voglio raggruppare tutti i codici relativi ad un articolo.

Potete aiutarmi a scrivere la query? Grazie

Scusate il doppio post, ma avevo ricevuto un messaggio di errore dal server

Jeremy Profilo | Guru

Ciao Pico81
>voglio ottenere dalla query una stringa con questa forma:
>articolo1 - codice1,codice2,codice3.

Prova con questa:
SELECT Codice FROM TuaTabella WHERE Articolo='Articolo1'

Otterrai 3 record con
Codice1
Codice2
Codice3

Dopo di che, usa anche tu i parametri.
SELECT Codice FROM TuaTabella WHERE Articolo=?

Facci sapere...
Ciao


lbenaglia Profilo | Guru

>Potete aiutarmi a scrivere la query? Grazie
La query è in funzione del DBMS che stai utilizzando

Se usi SQL Server fai riferimento a questi threads:
http://groups.google.it/group/microsoft.public.it.sql/browse_frm/thread/25ec5df1a3d03ce9
http://groups.google.it/group/microsoft.public.it.sql/browse_thread/thread/30eaae64f8e48fae

Se utilizzi Access leggi questo thread:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=6630

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

pico81 Profilo | Newbie

Penso di essermi espresso male.
Voglio ottenere un nuovo campo che contenga tutti i codici relativi all'articolo, quindi dovrebbe essere così:

ArticoloID || Codici
Articolo1 || Codice1,Codice2,...
Articolo2 || Codice1,Codice2,Codice3...

In questo esempio:
select Title + ' ' + FirstName + ' ' + LastName
as "Person Name"
from Person.Contact

vengono selezionati i campi di più colonne, quindi il risultatyo è semplice, ma nel mio caso dovrei selezionarli da una sola colonna.

Ho provato a creare una tabella a campi incrociati, ma esce fuori una tabella con un numero di colonne enorme, ovvero tante quanti sono i codici.

lbenaglia Profilo | Guru

>Penso di essermi espresso male.
Direi il contrario, infatti i 3 threads che ti ho indicato forniscono esattamente il risultato richiesto

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

pico81 Profilo | Newbie

Stavo modificando il mio ultimo messagio mentre tu rispondevi, do un occhiata ai threads e ti faccio sapere.
Grazie

pico81 Profilo | Newbie

Ho provato l'esempio del thread per il database in Access e funziona alla perfezione.

Adesso la domanda è:
come faccio a richiamare la query che ho creato dal mio programma in VB?
Uso VB2008 express.

lbenaglia Profilo | Guru

>come faccio a richiamare la query che ho creato dal mio programma
>in VB?
Se il database (Access deduco dalla tua risposta) è acceduto da una applicazione client, non puoi referenziare funzioni VBA nei comandi SQL.
A questo punto non ti resta che implementare quella funzione lato client in Visual Basic 2008 ed applicarla al result set "piatto" senza alcun raggruppamento tramite un loop.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

pico81 Profilo | Newbie

Un piccolo aiutino?
Non ho la minima idea di come procedere.

PS ho visto che la query che mi sonocreato in access, me la ritrovo in VB2008 nella finestra Esplora database sotto la voce Funzioni del mio database.
Posso farne uso in qualche modo?
Ecco lo screenshoot

197x189 5Kb
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5