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 #)?

È stato utile?

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top