>Preannuncio che farò una statua d'oro a chi mi risolve questo
>problemone.
Ciao Emily,
Ma la consegni a domicilio?
>Devo fare una query in SQL, ma ho il problema che, avendo chiamato
>le tabelle con nomi contenenti spazi, mi da errore di sintassi,
>nonostante avessi inserito le parentesi quadre. Come faccio?
>
>Il codice è:
>SELECT Sum(Q.Importo) AS ImportoTotale
>FROM [SELECT Importo FROM Ammortamento UNION ALL
>SELECT Importo Traghetti FROM Traghetti e Trafori UNION ALL
>SELECT Importo Spese FROM Spese Totali]. AS Q;
Come giustamente hai riportato, gli spazi sono caratteri non ammessi nella definizione degli oggetti.
Per ovviare a questo problema lo standard ANSI SQL-92 prevede l'utilizzo delle parentesi quadre (brakets) intorno al nome dell'oggetto, dando origine a quelli che vengono chiamati Identificatori Delimitati (Delimited Identifiers).
Vediamo come possiamo correggere il tuo esempio:
SELECT Sum(Q.Importo) AS ImportoTotale
FROM (
SELECT Importo
FROM Ammortamento
UNION ALL
SELECT [Importo Traghetti]
FROM [Traghetti e Trafori]
UNION ALL
SELECT [Importo Spese]
FROM [Spese Totali]
) AS Q;
Come vedi ho utilizzato le parentesi tonde per racchiudere la tabella derivata e le parentesi quadre per delimitare i Delimited Identifiers.
Per maggiori dettagli, consulta il seguente paragrafo dei Books Online:
"Using Identifiers"
http://msdn.microsoft.com/library/en-us/acdata/ac_8_con_03_6e9e.asp
>Aiutatemi, è importante!!!!
Fatto
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org