|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
[SQL Server] Sottorichiesta su QUERY
Salve, ho una problema troppo complicato per me,
Ho 2 Database: ------------------ DB1 : contiene una Tabella dove ci sono scritti dei nomi di altre 2000 Tabelle. DB2 : contiene le 2000 Tabelle elencate nel DB1 (come detto sopra...), in ognuna delle 2000 tabelle sono scritti +/- 1000 Record. Cosa devo ottenere: una QUERY che mi restituisce il nome-Tabella e il COUNT(*) dei record per ognuna delle 2000 Tabelle. cioe' la visualizzazione sara: Codice:
Table_1 | 1023 Table_2 | 756 Table_3 | 983 Table_4 | 1733 Table_5 | 1066 Codice:
SELECT NomeTabella, (SELECT COUNT(*)AS Valore FROM Table_1) FROM TabellaElencoNomi come posso fare perche' la SELECT esterna passi alla (SELECT interna) il NomeTabella in modo da CONTARE i record della tabella passata ??? |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 65
|
Vado a braccio, spero di non commettere errori:
Codice:
declare @tmp_tabella varchar(50) declare @risultato table(tabella varchar(50), righe int) declare cur_nomi cursor for select nometabella from db1.dbo.tabellaelenconomi open cur_nomi fetch next from cur_nomi into @tmp_tabella while @@FETCH_STATUS = 0 begin insert into @risultato select @tmp_tabella, count(*) from @tmp_tabella fetch next from cur_nomi into @tmp_tabella end close cur_nomi deallocate cur_nomi select * from @risultato |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2000
Messaggi: 1209
|
GRANDISSIMO!!!
Spero un giorno di potere sviluppare cosi come te, una cosa, mi restituisce questo errore: -------------------------------------------------------------- Server: messaggio 137, livello 15, stato 2, riga 9 Dichiarare la variabile '@tmp_tabella'. eppure e' dichiarata. |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Oct 2005
Messaggi: 65
|
Hai ragione.
Piuttosto che creare una tabella in memoria, ti conviene creare una tabella temporanea. Codice:
declare @tmp_tabella varchar(50) create table #risultato(tabella varchar(50), righe int) declare cur_nomi cursor for select nometabella from db1.dbo.tabellaelenconomi open cur_nomi fetch next from cur_nomi into @tmp_tabella while @@FETCH_STATUS = 0 begin insert into #risultato select @tmp_tabella, count(*) from @tmp_tabella fetch next from cur_nomi into @tmp_tabella end close cur_nomi deallocate cur_nomi select * from #risultato |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:35.



















