Join speciale in sql server

venerdì 27 marzo 2009 - 13.10

trinity Profilo | Guru

Buongiorno ragazzi,
ho creato una join dove qualcosa mi sfugge e pertanto non mi restituisce il valore da me richiesto...Vorrei anche sottoporla alla vostra supervisione :-)

ho questa tabella:

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

all'interno supponiamo di inserire i seguenti dati.

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

poi ho una tabella comuni formata in questo modo:

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

inserisco solo un record per esempio:

Insert into comuni(id,codcomune,comune,prov)Values(1,60001,'Terracina','LT') Insert into comuni(id,codcomune,comune,prov)Values(2,60002,'Latina','LT')


allora io ho creato questa query:

Select ctt4.anno,c.comune,c.codcomune,ctt4.codcategoria, ctt4.totstrutture,ctt4.totcamere,ctt4.totletti,ctt4.totbagni From dbo.ctt4 as ctt4 RIGHT JOIN dbo.comuni as c ON ctt4.codcomune=c.codcomune WHERE c.prov='LT' Order by codcomune,codcategoria

mi prende tutti i comuni della provincia di LT ma anche i record di tutti gli anni della tabella CTT4.
In pratica a me serve avere tutti i comuni della prov di LT anche se alcuni record non si trovano nella tabella CTT4 ma per l'anno che io decido di avere.

Mi sfugge dove inserire il parametro dell'anno da ricavare...

Potrei utilizzare l'EXCEPT, ma mi chiedo se c'è una solozione + rapida e veloce per la ricerca e visualizzazione dei dati.

Ciao






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

lbenaglia Profilo | Guru

>In pratica a me serve avere tutti i comuni della prov di LT anche
>se alcuni record non si trovano nella tabella CTT4 ma per l'anno
>che io decido di avere.
Puoi postare il result set finale che vuoi ottenere per l'anno 2009?

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

trinity Profilo | Guru

un esempio potrebbe essere questo:


2008 Terracina 60001 11 120 230 145 70
2008 Latina 60002 12 156 235 150 80
2008 Sabaudia 60002 13 56 78 40 35
2008 Ponza 60003 13 12 20 8 4

in pratica non deve prendere i record del 2009..ovviamente gli anni che deveno essere scelti li passo io come parametro

con l'except funziona ma volevo sapere se c'era una procedura migliore

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

lbenaglia Profilo | Guru

>un esempio potrebbe essere questo:
>
>
>2008 Terracina 60001 11 120 230 145 70
>2008 Latina 60002 12 156 235 150 80
>2008 Sabaudia 60002 13 56 78 40 35
>2008 Ponza 60003 13 12 20 8 4
>
>in pratica non deve prendere i record del 2009..ovviamente gli
>anni che deveno essere scelti li passo io come parametro

Eh? Tu passi 2009 come parametro e vuoi ottenere i dati del 2008?
Un po' contorta come logica, non trovi?

>con l'except funziona ma volevo sapere se c'era una procedura
>migliore
Che intendi con "migliore"?
Cos'ha l'operatore EXCEPT che ti fa tanto "schifo"?

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

trinity Profilo | Guru

aspe ci siamo confusi nazi meglio mi sn confuso...Intendevo che l'anno lo passo come parametro e quindi in base ad esso devo estrapolare i dati.
Per migliore intendevo un cosiglio se c'è qualcosa di meglio dell'except oppure posso procedere secondo te con il suo utilizzo.

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

lbenaglia Profilo | Guru

>aspe ci siamo confusi nazi meglio mi sn confuso...Intendevo che
>l'anno lo passo come parametro e quindi in base ad esso devo
>estrapolare i dati.
Quindi ti rifaccio la domanda: Puoi postare il result set finale che vuoi ottenere per l'anno 2009?

>Per migliore intendevo un cosiglio se c'è qualcosa di meglio
>dell'except oppure posso procedere secondo te con il suo utilizzo.
E ti ripeto: Cos'ha l'operatore EXCEPT che ti fa tanto "schifo"?

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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