Aiuto su una stored sql server 2005

giovedì 01 maggio 2008 - 23.16

trinity Profilo | Guru

Salve ragazzi avrei bisogno di un piccolo aiuto su la modifica di una mia stored procedure.

Allora partiamo con il codice, prima di tutto vi posto le due tabelle in oggetto:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

inseriamo dei dati nelle due tabelle:

tabella appoggio: Insert Into Tab_appoggio (id,codcomune,codnazione) Values (1,60,1) Insert Into Tab_appoggio (id,codcomune,codnazione) Values (2,60,1) Insert Into Tab_appoggio (id,codcomune,codnazione) Values (3,60,1) Insert Into Tab_appoggio (id,codcomune,codnazione) Values (4,60,1) Insert Into Tab_appoggio (id,codcomune,codnazione) Values (5,60,1) Insert Into Tab_appoggio (id,codcomune,codnazione) Values (6,60,2) Insert Into Tab_appoggio (id,codcomune,codnazione) Values (7,60,2) Insert Into Tab_appoggio (id,codcomune,codnazione) Values (8,60,2) Insert Into Tab_appoggio (id,codcomune,codnazione) Values (9,60,3)

Tabella Nazioni: Insert Into Tab_Nazioni (Id,Descrizione) Values (1,'Austria') Insert Into Tab_Nazioni (Id,Descrizione) Values (2,'Belgio') Insert Into Tab_Nazioni (Id,Descrizione) Values (3,'Italia') Insert Into Tab_Nazioni (Id,Descrizione) Values (4,'Francia') Insert Into Tab_Nazioni (Id,Descrizione) Values (5,'Germania')

allora ecco il codice della stored:
SELECT tab_nazioni.descrizione,Sum(tab_appoggio.codnazione) As TotMovimenti FROM Dbo.Tab_appoggio JOIN Dbo.Tab_Nazioni On Dbo.Tab_Nazioni.Id=dbo.Tab_Appoggio.Codnazione WHERE Codcomune IN(60) AND CodNazione IN (1,2,3,4,5) Group By tab_nazioni.descrizione


La stored funziona è come risultato mi esce:

Nazione - Movimenti
Austria 5
Belgio 3
Italia 1

invece io vorrei che uscisse così:

Nazione - Movimenti
Austria 5
Belgio 3
Italia 1
Francia 0
Germania 0

in quanto nella IN del codnazione ho indicato anche le nazioni che non hanno movimento nella tabella tab_appoggio.

Si può fare qualcosa se si come?

Ciao e grazie


Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Salve ragazzi
Ciao!

>in quanto nella IN del codnazione ho indicato anche le nazioni
>che non hanno movimento nella tabella tab_appoggio.
Eh ma se la metti nella where, anche cambiando il criterio di JOIN escluderai sempre i codnazione non inclusi in una in ed i codcomune non inclusi nell'altra..
Siccome per avere ogni nazione sei costretto ad utilizzare una outer join, la where esclude i record dove il legame non si verifica (ed avrai null nel codnazione e nel codcomune). Puoi provare così:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ho messo la COUNT perchè non capisco come possa funzionarti la SUM..

>Ciao e grazie
Di nulla!
Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

trinity Profilo | Guru

Nella tabella tab_nazioni non ci sono solo le nazioni che ho messo nell'esempio, ce ne sono molte di +.
Facendo come dici tu funziona solo che non mi prende solamente le nazioni indicate nella IN ma anche le altre che si trovano nella tabella Tab_nazioni.

Come mai?

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

alx_81 Profilo | Guru

>Nella tabella tab_nazioni non ci sono solo le nazioni che ho
>messo nell'esempio, ce ne sono molte di +.
>Facendo come dici tu funziona solo che non mi prende solamente
>le nazioni indicate nella IN ma anche le altre che si trovano
>nella tabella Tab_nazioni.
>
>Come mai?
E' la outer join..
Allora la soluzione proposta non è quella giusta..
E lo stesso lo farà per il comune..

In questo modo dovresti risolvere il problema..
Stanotte era tardi e potevo fare meglio :


SELECT N.descrizione, COUNT(A.CodNazione) AS TotMovimenti FROM dbo.Tab_Nazioni N LEFT JOIN dbo.Tab_appoggio A ON N.Id = A.Codnazione AND A.Codcomune IN(60) WHERE N.Id IN (1,2,3,4,5) GROUP BY N.descrizione
Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

trinity Profilo | Guru

Grazie risolto.

Senti nessuno mi risponde, ho questo post:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=22698

puoi darci un'occhiata

ciao Fabio
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
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