Newsgroup: it.comp.appl.access
Titolo: UNION ALL , quante tabelle al max ?

So che non è molto elegante ma ho scritto una query UNION del tipo :
SELECT   Vasca1.*
FROM Vasca1 WHERE contatore = (SELECT MAX (contatore) FROM vasca1)
UNION ALL SELECT  Vasca2.*
FROM Vasca2 WHERE contatore = (SELECT MAX (contatore) FROM vasca2)
UNION ALL SELECT  Vasca3.*
FROM Vasca3 WHERE contatore = (SELECT MAX (contatore) FROM vasca3)
.....
UNION ALL SELECT  Vasca45.*
FROM Vasca45 WHERE contatore = (SELECT MAX (contatore) FROM vasca45);
Questa query trova l'ultimo record immesso in ognuna delle 45 tabelle e
successivamente unisce tutti i 45 record ritrovati.
il problema è che in access xp funziona , in access 2000 no !!!
In questo caso l' unione arriva fino ad un max di 22 tabelle. Qualcuno
di vuoi può darmi un suggerimento per risolvere il problema , sia
utilizzando UNION o qualcos'altro?
Grazie
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Diego ha scritto nel messaggio ...

Si può eseguire il raggruppamento unio per le prime 20, poi per le
successive 20, e in seguito per le mancanti. A questo punto si può fare una
union sulle tre query ottenute.
Saluti
Dell'Oca Marco
D.M.Software

 D.M.Software
Ti ringrazio molto, ho provato subito e ne sono uscito. In effetti avevo
visto che nell' help in linea UNION valeva anche per query indipendenti
(?). 
Avevo scritto l'istruzione per unire 2 query di raggruppamento e la
tabella mancante ma non funzionava. Probabilmente mischiavo un pò
troppo.
Grazie ancora
Diego


 Diego
Scusate ancora , ma ora si presenta un nuovo problema.
Nel programma c'era anche una Query UNION che raggruppava completamente
le 45 tabelle del tipo :
SELECT  Vasca1.*
FROM Vasca1 
UNION ALL SELECT  Vasca2.*
FROM Vasca2 
...UNION ALL SELECT  Vasca45.*
From Vasca45;
Ora grazie al suggerimento di Marco è diventata :
SELECT  1a20C.*
FROM 1a20C 
UNION ALL SELECT  21a40C.*
FROM 21a40C
UNION ALL SELECT  41a45C.*
FROM 41a45C;
dove 1a20c è l'unione delle prime 20 tabelle e così via.
Fin qui tutto ok ma da questa query chiamata COMPLETO facevo una query
di selezione (di nome carico),per raggruppare i record secondo un campo
data(da una maschera)e sommare un campo quantità:
SELECT [Completo].[Codice], Sum([Completo].[QtaCarico]) AS
Totale_Caricate,
[Completo].[DataCarico], Count([Completo].[Vasca]) AS N°_Vasche
FROM Completo
GROUP BY [Completo].[Codice], [Completo].[DataCarico]
HAVING (((Completo.DataCarico)=Forms!Maschera1!miadata));
Purtroppo la stessa cosa ora non va. Si rifiuta di raggruppare anche un
solo campo. Ho provato anche a creare da questa query, una query per
creare
una tabella su cui lavorare. Ma l'errore è sempre "Alias non valido".
Qualcuno ha un suggerimento da darmi ?
Grazie ancora a tutti.


Grazie
probabilmente hai incontrato il limite di caratteri per la stringa sql
che sull'XP č stato aumentato di brutto rispetto al 2000
Saluti.
Emanuele.

Diego Viccioli ha scritto nel messaggio ...

Scusa se ti rispondo solo ora.
Non è un problema di lunghezza di stringa ma il fatto che probabilmete hai
modificato il tipo di campo tra una unione ed un'altra.
Per poter ottenere una unione devi necessariamente unire dei record che anno
assolutamente il numero ed il tipo dei campi uguali.
Se una select include dei campi che hanno un formato diverso, tutta l'unione
crea un errore
Saluti
Marco Dell'Oca
D.M.Software