Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Istruzione di selezione/inserimento database gerarchico (SQL Server)

Se si utilizza SQL Server 2005 o versioni successive, è possibile utilizzare query ricorsive per ottenere le informazioni. Ecco un esempio:

With tree (id, Name, ParentID, [level])
As (
    Select id, Name, ParentID, 1
    From [myTable]
    Where ParentID = 0

    Union All

    Select child.id
          ,child.Name
          ,child.ParentID
          ,parent.[level] + 1 As [level]
    From [myTable] As [child]
    Inner Join [tree] As [parent]
    On [child].ParentID = [parent].id)
Select * From [tree];

Questa query restituirà la riga richiesta dalla prima parte (Where ParentID =0) e tutte le sottorighe in modo ricorsivo. Questo ti aiuta?

Non sono sicuro di aver capito cosa vuoi che accada con il tuo inserto. Puoi fornire maggiori informazioni in termini di risultato atteso quando avrai finito?

Buona fortuna!