Newsgroup: it.comp.lang.visual-basic
Titolo: Query SQL (VB e Access): Sto diventando matto!

Non riesco a capire dove sta l'errore!
Vi prego aiutatemi, grazie
Se la query č questa:
------------------------------------------------
SELECT   TotaleLavoroABC.IDSezioneABC,
         TotaleLavoroABC.SezioneABC,
         TotaleLavoroABC.IDVoceABC,
         TotaleLavoroABC.VoceABC,
         IIf(
IsNull(TotaleAcquistiABC.TotaleAcquistiABC),0,TotaleAcquistiABC.TotaleAcquis
tiABC) +  TotaleLavoroABC.TotaleLavoroABC AS TotaleCostoDelleAttivita
FROM     [   SELECT  TotaleAcquistiABCAree.IDSezioneABC,
                     TotaleAcquistiABCAree.SezioneABC,
                     TotaleAcquistiABCAree.IDVoceABC,
                     TotaleAcquistiABCAree.VoceABC,
IIf(IsNull(TotaleAcquistiABCAzienda.TotaleAcquistiABCAzienda),0,TotaleAcquis
tiABCAzienda.TotaleAcquistiABCAzienda)+TotaleAcquistiABCAree.TotaleAcquistiA
BCAree AS TotaleAcquistiABC
             FROM    [   SELECT DISTINCT SezioniABC.IDSezioneABC,
                                 SezioniABC.SezioneABC,
                                 AcquistiABC.IDVoceABC,
                                 VociABC.VoceABC,
                                 Sum(Percentuale*SommaDiConsuntivo) AS
TotaleAcquistiABCAree
                         FROM    (   SezioniABC
                                     INNER JOIN
                                     VociABC
                                     ON SezioniABC.IDSezioneABC =
VociABC.IDSezioneABC
                                 )
                                 INNER JOIN
                                 (   (   CalcoloCEArea
                                         INNER JOIN
                                         Selezione
                                         ON  (   (
CalcoloCEArea.IDVoceCE=Selezione.IDVoceCE)
                                                 AND
                                                 (
CalcoloCEArea.Selezione.IDArea=Selezione.IDArea)
                                             )
                                     )
                                     INNER JOIN
                                     (   AcquistiABC
                                         INNER JOIN
                                         MisureAcquistiABC
                                         ON AcquistiABC.IDAcquistiABC =
MisureAcquistiABC.IDAcquistiABC
                                     )
                                     ON Selezione.IDVoceCESelezione =
AcquistiABC.IDVoceCESelezione
                                 )
                                 ON VociABC.IDVoceABC =
AcquistiABC.IDVoceABC
                         WHERE
Year(MisureAcquistiABC.DataDiRiferimento)=2002
                                 AND
Month(MisureAcquistiABC.DataDiRiferimento)=12
                         GROUP BY SezioniABC.IDSezioneABC,
                                 SezioniABC.SezioneABC,
                                 AcquistiABC.IDVoceABC,
                                 VociABC.VoceABC
                     ]. AS TotaleAcquistiABCAree
                     LEFT JOIN
                     TotaleAcquistiABCAzienda
                     ON
TotaleAcquistiABCAree.IDVoceABC=TotaleAcquistiABCAzienda.IDVoceABC
         ]. AS TotaleAcquistiABC
         RIGHT JOIN
         [   SELECT  SezioniABC.IDSezioneABC,
                     SezioniABC.SezioneABC,
                     VociABC.IDVoceABC,
                     VociABC.VoceABC,
Sum(ContributiPersonaleABC.CostoDelLavoro*ContributiPersonaleABC.Percentuale
) AS TotaleLavoroABC
             FROM    SezioniABC
                     INNER JOIN
                     (   ContributiPersonaleABC
                         INNER JOIN
                         VociABC
                         ON
ContributiPersonaleABC.IDVoceABC=VociABC.IDVoceABC
                     )
                     ON SezioniABC.IDSezioneABC=VociABC.IDSezioneABC
             GROUP BY SezioniABC.IDSezioneABC,
                     SezioniABC.SezioneABC,
                     VociABC.IDVoceABC,
                     VociABC.VoceABC,
                     SezioniABC.Ordinamento,
                     VociABC.Ordinamento
             ORDER BY SezioniABC.Ordinamento,
                     VociABC.Ordinamento
         ]. AS TotaleLavoroABC
         ON  TotaleLavoroABC.IDVoceABC=TotaleAcquistiABC.IDVoceABC
------------------------------------------------
il  risultato č questo:
Errore di sintassi nell'espressione della query
'TotaleAcquistiABCAree.IDVoceABC=TotaleAcquistiABCAzienda.IDVoceABC
         ]. AS TotaleAcquistiABC
         RIGHT JOIN
         [   SELECT  SezioniABC.IDSezioneABC,
                     SezioniABC.SezioneABC,
                     VociABC.IDVoceABC'.
------------------------------------------------
se modifico il Right JOIN cosě
------------------------------------------------
SELECT   TotaleLavoroABC.IDSezioneABC,
         TotaleLavoroABC.SezioneABC,
         TotaleLavoroABC.IDVoceABC,
         TotaleLavoroABC.VoceABC,
         IIf(
IsNull(TotaleAcquistiABC.TotaleAcquistiABC),0,TotaleAcquistiABC.TotaleAcquis
tiABC) +  TotaleLavoroABC.TotaleLavoroABC AS TotaleCostoDelleAttivita
FROM     [   SELECT  TotaleAcquistiABCAree.IDSezioneABC,
                     TotaleAcquistiABCAree.SezioneABC,
                     TotaleAcquistiABCAree.IDVoceABC,
                     TotaleAcquistiABCAree.VoceABC,
IIf(IsNull(TotaleAcquistiABCAzienda.TotaleAcquistiABCAzienda),0,TotaleAcquis
tiABCAzienda.TotaleAcquistiABCAzienda)+TotaleAcquistiABCAree.TotaleAcquistiA
BCAree AS TotaleAcquistiABC
             FROM    [   SELECT DISTINCT SezioniABC.IDSezioneABC,
                                 SezioniABC.SezioneABC,
                                 AcquistiABC.IDVoceABC,
                                 VociABC.VoceABC,
                                 Sum(Percentuale*SommaDiConsuntivo) AS
TotaleAcquistiABCAree
                         FROM    (   SezioniABC
                                     INNER JOIN
                                     VociABC
                                     ON SezioniABC.IDSezioneABC =
VociABC.IDSezioneABC
                                 )
                                 INNER JOIN
                                 (   (   CalcoloCEArea
                                         INNER JOIN
                                         Selezione
                                         ON  (   (
CalcoloCEArea.IDVoceCE=Selezione.IDVoceCE)
                                                 AND
                                                 (
CalcoloCEArea.Selezione.IDArea=Selezione.IDArea)
                                             )
                                     )
                                     INNER JOIN
                                     (   AcquistiABC
                                         INNER JOIN
                                         MisureAcquistiABC
                                         ON AcquistiABC.IDAcquistiABC =
MisureAcquistiABC.IDAcquistiABC
                                     )
                                     ON Selezione.IDVoceCESelezione =
AcquistiABC.IDVoceCESelezione
                                 )
                                 ON VociABC.IDVoceABC =
AcquistiABC.IDVoceABC
                         WHERE
Year(MisureAcquistiABC.DataDiRiferimento)=2002
                                 AND
Month(MisureAcquistiABC.DataDiRiferimento)=12
                         GROUP BY SezioniABC.IDSezioneABC,
                                 SezioniABC.SezioneABC,
                                 AcquistiABC.IDVoceABC,
                                 VociABC.VoceABC
                     ]. AS TotaleAcquistiABCAree
                     LEFT JOIN
                     TotaleAcquistiABCAzienda
                     ON
TotaleAcquistiABCAree.IDVoceABC=TotaleAcquistiABCAzienda.IDVoceABC
         ]. AS TotaleAcquistiABC
         ,
         [   SELECT  SezioniABC.IDSezioneABC,
                     SezioniABC.SezioneABC,
                     VociABC.IDVoceABC,
                     VociABC.VoceABC,
Sum(ContributiPersonaleABC.CostoDelLavoro*ContributiPersonaleABC.Percentuale
) AS TotaleLavoroABC
             FROM    SezioniABC
                     INNER JOIN
                     (   ContributiPersonaleABC
                         INNER JOIN
                         VociABC
                         ON
ContributiPersonaleABC.IDVoceABC=VociABC.IDVoceABC
                     )
                     ON SezioniABC.IDSezioneABC=VociABC.IDSezioneABC
             GROUP BY SezioniABC.IDSezioneABC,
                     SezioniABC.SezioneABC,
                     VociABC.IDVoceABC,
                     VociABC.VoceABC,
                     SezioniABC.Ordinamento,
                     VociABC.Ordinamento
             ORDER BY SezioniABC.Ordinamento,
                     VociABC.Ordinamento
         ]. AS TotaleLavoroABC
         WHERE TotaleLavoroABC.IDVoceABC=TotaleAcquistiABC.IDVoceABC
------------------------------------------------
il risultato č questo
Errore di sintassi nell'espressione della query
'TotaleAcquistiABCAree.IDVoceABC=TotaleAcquistiABCAzienda.IDVoceABC
         ]. AS TotaleAcquistiABC '.

Senza una DDL che ci dia qualche dato sul quale lavorare è difficile
fare dei test.
Hai provato a spezzettare la query in piccoli pezzi e capire step
by step dove è l'inghippo?
Andrea

Avevo provato qualche tempo fa a definire mettere come te una select interna
come tabella temporanea, ma non funzionava.
Definendo quella select come ad es. query1, e mettendo nella select select *
from query1 invece funzionava...
Quresto in Access.. altri sql Oracle nonchè DB2 supportano l'opzione
Saluti, Il Sora!!

 ha scritto nel messaggio
news:binse7$tou$1...@stargate1.inet.it...


Dovrei riscrivermi la query per capire cosa c'è dentro.. :-)) Letta così non
capisco nulla...
Se ti costa poco , ti conviene, in un primo momento, eseguire le query su
tabelle temporanee, in modo da materializzarle ed eseguire la join fra le
tre tabelle temporanee.
Sempre che tu non abbia milionate di records e non debba ripetere
l'operazione ogni 3 secondi.
Ad ogni esecuzione dovrai svuotare le tabelle temporanee....
Altrimenti bisogna spostare le condizioni di where delle Subquey nella query
principale, ma bisogna studiarla e capire se è possibile
Saluti, Il Sora!!