>Vorrei creare la tabella nel database,per poi lavorarci sopra
>usando asp....che faccio?
Parlando di db, è possibile realizzare gerarchie in vario modo..
Nel tuo caso farei una tabella contenente sia l'id dell'azienda sia l'id dell'azienda "padre"..
-- creazione tabella
-- ***********************************************************************************
IF EXISTS (SELECT * FROM sys.tables WHERE object_id = object_id('Aziende'))
DROP TABLE Aziende
CREATE TABLE Aziende
(
IDAzienda int IDENTITY(1,1) PRIMARY KEY CLUSTERED,
RagioneSociale varchar(100) NOT NULL,
Indirizzo varchar(100) NOT NULL,
Tel varchar(18) NOT NULL,
Fax varchar(18) NOT NULL,
IDSuperAzienda int NULL
)
CREATE NONCLUSTERED INDEX IX_IDSuperAzienda ON Aziende
(
IDSuperAzienda
)
-- inserimento dati
-- ***********************************************************************************
INSERT INTO Aziende (RagioneSociale,Indirizzo,Tel,Fax,IDSuperAzienda)
VALUES ('Azienda 1','Via Mazzini 10',111111,111111,NULL) -- inserisce id 1
INSERT INTO Aziende (RagioneSociale,Indirizzo,Tel,Fax,IDSuperAzienda)
VALUES ('Azienda 2','Via Melloni 10',222222,222222,NULL) -- inserisce id 2
INSERT INTO Aziende (RagioneSociale,Indirizzo,Tel,Fax,IDSuperAzienda)
VALUES ('Azienda 3','Via Garibaldi 10',333333,333333,NULL)-- inserisce id 3
INSERT INTO Aziende (RagioneSociale,Indirizzo,Tel,Fax,IDSuperAzienda)
VALUES ('Azienda 1.1','Via Matteotti 10',111111,111111,1) -- inserisce id 4
INSERT INTO Aziende (RagioneSociale,Indirizzo,Tel,Fax,IDSuperAzienda)
VALUES ('Azienda 1.2','Via Verdi 10',222222,222222,1) -- inserisce id 5
INSERT INTO Aziende (RagioneSociale,Indirizzo,Tel,Fax,IDSuperAzienda)
VALUES ('Azienda 2.1','Via Repubblica 10',111111,111111,2) -- inserisce id 6
INSERT INTO Aziende (RagioneSociale,Indirizzo,Tel,Fax,IDSuperAzienda)
VALUES ('Azienda 3.1','Via Dalla Chiesa 10',111111,111111,3) -- inserisce id 7
INSERT INTO Aziende (RagioneSociale,Indirizzo,Tel,Fax,IDSuperAzienda)
VALUES ('Azienda 3.1.1','Via Cavour 10',222222,222222,7)
INSERT INTO Aziende (RagioneSociale,Indirizzo,Tel,Fax,IDSuperAzienda)
VALUES ('Azienda 3.1.2','Via Dante 10',333333,333333,7)
-- ricorsione per ottenere la gerarchia
-- ***********************************************************************************
;WITH Gerarchia AS
(
SELECT
IDAzienda, RagioneSociale, IDSuperAzienda
FROM
Aziende
WHERE IDSuperAzienda IS NULL
UNION ALL
SELECT
A.IDAzienda, A.RagioneSociale, A.IDSuperAzienda
FROM
Aziende A
JOIN Gerarchia B
ON A.IDSuperAzienda = B.IDAzienda
)
SELECT * FROM Gerarchia
-- ***********************************************************************************
tramite le CTE (common table expression, la with, per intenderci) possiamo ottenere la ricorsione, in modo da ottenere la corretta gerarchia ad albero.. ho creato l'indice sul campo IDSuperAzienda per rendere più performante la JOIN interna al processo di ricorsione.
Tutto questo è valido per SQL Server 2005.
Se hai 2000 ne riparliamo..
ciao!
Alx81 =)
http://blogs.dotnethell.it/suxstellino