Unione di due o più tabelle, quando non si conosce il numero di tabelle si uniscono
-
22-08-2019 - |
Domanda
Sto lavorando con MS SQL 2005. Ho definito una struttura ad albero come:
1
|\
2 3
/|\
4 5 6
Ho fatto uno SQL-funzione di Subs (id), che ottiene l'id, e restituisce la tabella sotto-albero. Quindi, Subs (3) restituirà 4 righe con 3,4,5,6, mentre Subs (2) restituisce una riga, con 2.
Ho una dichiarazione prescelta che restituisce i Ids di cui sopra (partecipare a questo albero con altre tabelle)
Voglio dopo l'istruzione SELECT che restituisce i Ids di cui sopra
(Che si tradurrà in una tabella con per esempio 2 righe:)
2
3
per essere in grado di eseguire il Subs-funzione
Subs(2)
union
Subs(3).
(Il risultato dovrebbe essere le righe con id 2,3,4,5,6)
Il problema è che non so come passare gli argomenti e non so come fare l'uso dinamico di unione.
E 'possibile risolvere questo a questo livello, o dovrei portarla al superiore livello (C #)?
Soluzione
Non credo che avete bisogno di UNION qui, con SQL Server 2005 è possibile ottenere il risultato desiderato con CROSS APPLY:
select
f.*
from
resultsTable rt
cross apply dbo.subs(rt.ID) f
Che sta assumendo che il resultTable è quella che memorizza i risultati della prima query, e il nome del campo è ID
Altri suggerimenti
Credo che si desidera leggere su ricorsiva Comune espressioni di tabella .