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
Valori null nella vista
martedì 04 gennaio 2011 - 16.33
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 3.5
|
Windows XP
|
Visual Studio 2008
|
SQL Server 2005
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
mar 4 gen 2011 - 16:33
salve,
in una vista ho diverse viste collegate, di cui una è la sottostante.
Premetto che ta tabella tabfatture può anche non essere compilata.
Essendo questa non compilata , tutte le altre viste mi danno come risultato "vuoto".
Come posso ovviare a questo problema , nel senso che se la tabella tabfattura sia vuota , le altre mi diano di valiri?
Grazie
codice vista_cst:
SELECT ISNULL(SUM(dbo.TabFatture.totale), 0) AS TotCST, dbo.TabViaggi.n_vg, dbo.TabViaggi.nave
FROM dbo.TabFatture INNER JOIN
dbo.TabViaggi ON dbo.TabFatture.n_vg = dbo.TabViaggi.n_vg AND dbo.TabFatture.nave = dbo.TabViaggi.nave
WHERE (dbo.TabFatture.Tipo = 'CONTROSTALLIE')
GROUP BY dbo.TabViaggi.n_vg, dbo.TabViaggi.nave
--
codice della vista completa:
SELECT dbo.TabViaggi.n_vg, dbo.TabViaggi.nave, dbo.TabViaggi.dati_vg, dbo.TabViaggi.porto_prov, dbo.TabViaggi.data_inizio, dbo.TabViaggi.fine_vg,
dbo.TabViaggi.data_fine, dbo.TabViaggi.ore_fuorifitto, dbo.TabViaggi.data_polizza, dbo.TabViaggi.noleggiatore, dbo.TabViaggi.prodotto,
dbo.TabViaggi.peso, dbo.TabViaggi.note, dbo.Vista_TotFO.totaleFO, dbo.Vista_TotGO.totaleGO, dbo.Vista_TotPrevisione.totalePrevisione,
dbo.Tabnave.idnave1, dbo.Vista_NOLO.TotBrokerNolo, dbo.Vista_CST.TotBrokerCST, dbo.Vista_FattNolo.TotNolo, dbo.Vista_FattCST.TotCST,
dbo.Vista_TotEsborsi.totesborsi, dbo.TabViaggi.definitivo
FROM dbo.TabViaggi INNER JOIN
dbo.Tabnave ON dbo.TabViaggi.n_vg = dbo.Tabnave.n_vg AND dbo.TabViaggi.nave = dbo.Tabnave.Nave CROSS JOIN
dbo.Vista_TotFO CROSS JOIN
dbo.Vista_TotGO CROSS JOIN
dbo.Vista_NOLO CROSS JOIN
dbo.Vista_CST CROSS JOIN
dbo.Vista_TotPrevisione CROSS JOIN
dbo.Vista_FattNolo CROSS JOIN
dbo.Vista_FattCST CROSS JOIN
dbo.Vista_TotEsborsi
speedx
Profilo
| Junior Member
111
messaggi | Data Invio:
mar 4 gen 2011 - 16:47
Se metti una INNER JOIN ovviamente non avrai il dato che cerchi se non sono presenti gli stessi valori per le chiavi di join.
Una possibilita e' mettere una LEFT JOIN che prende sicuramente tutti i record della prima tabella (che non deve essere quella delle fatture) e se presenti anche i dati delle fatture.
Si scrive così
SELECT....
FROM TabNoFatt
LEFT JOIN TabFat
ON TabNoFatt.Campo1 = TabFat.Campo1
.....
ecc
//// Marcello C.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 4 gen 2011 - 17:39
>salve,
ciao
>in una vista ho diverse viste collegate, di cui una è la sottostante.
>Premetto che ta tabella tabfatture può anche non essere compilata.
>Essendo questa non compilata , tutte le altre viste mi danno
>come risultato "vuoto".
>Come posso ovviare a questo problema , nel senso che se la tabella
>tabfattura sia vuota , le altre mi diano di valiri?
posso chiederti come mai CROSS JOIN? devi fare dei prodotti cartesiani?
Al di là di questo, se una tabella è vuota dovrai prevedere la possibilità di considerare anche i legami che non si verificherebbero (con outer join).
Ma prima cerchiamo di capire quello che vuoi ottenere.
Se riesci, postaci qualche dato di esempio e le create delle tabelle affinchè possiamo essere più efficaci nell'aiuto..
>Grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Zagor60
Profilo
| Junior Member
159
messaggi | Data Invio:
mar 4 gen 2011 - 17:53
Ciao , sei un grande.
Funziona.
SELECT ISNULL(SUM(dbo.TabFatture.totale), 0) AS TotCST
FROM dbo.TabFatture LEFT OUTER JOIN
dbo.TabViaggi ON dbo.TabFatture.n_vg = dbo.TabViaggi.n_vg AND dbo.TabFatture.nave = dbo.TabViaggi.nave
WHERE (dbo.TabFatture.Tipo = 'CONTROSTALLIE')
Grazie
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 !