Newsgroup: it.comp.appl.access
Titolo: Query - SQL

Ancora Ciao..
Qualche buon anima mi sa spiegare la differenza tra una query normale ed una
query SQL tipo pass-through, di unione e di definizione dati, e quali di
queste risultano più efficaci e veloci in un database COLLEGATO tramite
OBDC???
Ciao, Pinko



Una query "normale" è una query che agisce su tabelle contenute
all'interno del file mdb, oppure ad esso collegate in qualsiasi modo,
anche via ODBC.
Una query pass-through è una query che agisce su tabelle che non sono
contenute all'interno del file mdb, nè sono ad esso collegate; in
questo caso è obbligatorio utilizzare un driver ODBC, infatti uno dei
parametri che devi fornire alle query di questo tipo è la stringa di
connessione via ODBC al database contenente le tabelle necessarie alla
query.
Per maggiori dettagli vedi l'help alla voce pass-through.
Una query di unione è una query che restituisce record selezionati
combinando due o più istruzioni SELECT che operano ciascuna su una
tabella diversa; in questo caso è necessario che le query
restituiscano tutte lo stesso numero di campi, nello stesso ordine,
dello stesso tipo (il tipo testo è considerato uguale a quello
numerico).
Se per esempio tu volessi estrarre dalla tabella Clienti e dalla
tabella Fornitori i dati comuni alle due tabelle, potresti scrivere 
SELECT "C" As SW_CliFor, C_RagSoc, C_Indirizzo FROM Clienti UNION
SELECT "F" As SW_CliFor, F_RagSoc, F_Indirizzo FROM Fornitori ORDER BY
SW_CliFor, C_RagSoc
Ma potresti anche scrivere (anche se non ha alcun senso): 
SELECT C_RagSoc, C_Indirizzo FROM Clienti UNION SELECT F_Indirizzo,
F_RagSoc, FROM Fornitori ORDER BY C_RagSoc
Per maggiori dettagli vedi l'help alla voce UNION.
Una query di definizione dati è una query che permette di creare una
nuova tabella, oppure eliminarne una esistente, oppure modificare la
struttura (aggiungere, eliminare o modificare campi) di una tabella
esistente, oppure creare o eliminare un indice associato ad una
tabella
Per maggiori dettagli vedi l'help alle voci
DROP
ALTER
CREATE
Per quanto riguarda la tua domanda sulle prestazioni, è difficile
rispondere in quanto entrano in gioco troppe variabili:
Quante persone utilizzano contemporaneamente il database ?
Esiste un server oppure la rete è di tipo p2p ?
Che tipo di rete (Ethernet, Token Ring, Apple Talk ...) ?
Che cablaggio (TP, RG58 ... ) ?
Se rete TP, c'è uno hub oppure uno switch e di che tipo (10, 10/100) ?
Quali e quanti protocolli (Netbeui, TCP/IP, IPX  ...) ?
Quali schede di rete (10, 10/100) ?
Com'è configurato il server (processore, s.o., RAM ...) ?
Se il database sul server non è Access:
che database é (SQL/Server, DB2, Informix ...)
quale driver ODBC viene utilizzato ?
In ogni caso, giusto per dare un'indicazione generica, le reti TP con
switch e schede 10/100 che utilizzano TCP/IP offrono in genere le
migliori prestazioni.
A parità di configurazione hw, uno dei punti *veramente* critici è il
driver ODBC; spesso cambiando driver si ottengo miglioramenti (ma
anche peggioramenti !) vistosi.
Vincenzo Turturro
---------------------------------------------
il sito comune di it.comp.appl.access:
http://www.sitocomune.com/
---------------------------------------------
E quello di it.comp.as400:
http://www.faq400.com/
---------------------------------------------