Newsgroup: it.comp.lang.delphi
Titolo: Dubbi su interrogazioni in SQL

Salve a tutti, ho il seguente problema:
uso all'interno del mio programma tante tabelle tutte uguali tra di loro
(con gli stessi campi intendo ma chiaramente con valori diversi). Ora io mi
trovo a dover fare delle ricerche all'interno di queste tabelle quindi
tramite una interrogazine SQL ho fatto qualcosa del tipo:
SELECT (campo1, campo2, campo3, campo4) FROM tabella1, tabella2, tabella3,
tabella4, tabella5) WHERE condizione
Tutto questo per evitare che se devo fare la ricerca su 30 tabelle devo
anche fare 30 interrogazzioni diverse per ogni tabella.
Il problema nasce quando vado ad eseguire questa interrogazione.
Mi viene restiutito il messaggio:
"Il riferimento al campo specificato "campo1" potrebbe essere relativo a piů
tabelle elencate nella clausola FROM dell'istruzione SQL"
Quindi che mi suggerite?
Dite che se la mia stringa SQL la cambiassi cosě cambierebbe qualcosa?
SELECT campo1.tabella1 campo2.tabella1, campo3.tabella1, campo4.tabella1,
campo1.tabella2, campo2.tabella2 ....... FROM tabella1, tabella2, tabella3,
tabella4, tabella5 WHERE condizione
Grazie a tutti
Davide

tabella4, tabella5 WHERE condizione
questa select dovrebbe restituirti (escudendo un attimino la where) il prodotto
delle query eseguite sulle singole tabelle
Es.
tabella 1
  campo 1
  campo 2
Valori tabella 1:
abc|34
fgh|45
tabella 2
  campo 1
  campo 2
Valori tabella 2:
ert|67
bnm|87
Select tabella1.campo1, tabella1.campo2, tabella2.campo1, tabella2.campo2 
From tabella1, tabella2;
Risultato:
abc|34|ert|67
abc|34|bnm|87
fgh|45|ert|67
fgh|45|bnm|87
ottieni un numero di record = NumRecTab1*NumRecTab2
4=2X2 nel nostro esempio
cioè per ogni record della prima tabella crea tanti record quanti sono
i record della seconda tabella, ripetendo i valori del record della prima tabella.
pensa tutto ciò esteso a 4 tabelle e 1000 record per ciascuna ... AIUTO
al risultato poi viene applicata la condizione (where) che scrivi
quindi vai a ridurre il numero di record del risultato ...
ora se i record delle varie tabelle hanno un qualche tipo di relazione,
univoca o uno a molti, cioè gestita da delle chiavi esterne puoi riprodurre
la condizione della relazione nel where ed ottenere un equivalente del
JOIN.
questo se vuoi manterenere i valori dei campi delle tabelle orizontali vabene
mi spiego meglio con un Es.
abc|34|ert|67
e non
abc|34
ert|67
se invece ciò che vuoi ottenere è la seconda cosa penso ti possa aiutare
l'istruzione UNION dell'SQL che puoi vedere da te su alcuni post precedenti
sul ng e comunque quello che fa è prendere i record della seconda tabella
e inserirli successivamente ai record della prima nel risultato.
spero di essere stato chiaro ... e di non aver detto boiate
nel caso qualcuno mi volesse correggere non mi dite parolacce plz ;)
	Ciao
	MassimoB
 
	--------------------[Fuori Tema]---------------------
	"La vera autenticita' non sta nell'essere come si e',
	ma nel riuscire a somigliare il piu' possibile
	al sogno che si ha di se stessi".
	Di Huma Rojo in "Tutto su mia madre".
	-----------------------------------------------------

 tabella4, tabella5 WHERE condizione
sicuro, se hai + campi nelle tue tabelle con gli stessi nomi il motore sql
(a meno che non sia molto smart) non sa da quale tabella vengano i campi,
così se gli specifichi anche la tabella di provenienza, vai tranq che non
fai un soldo di danno e l'errore non ti viene restituito.
ciao fabrizio

 nel caso qualcuno mi volesse correggere non mi dite parolacce plz ;)
Ti ringrazio, ora macino un po quello che mi hai spedito e poi
nell'eventualità ti mando altri eventuali dubbi...
Davide