>DETTO QUESTO IO DEVO CREARE UNA STORED IN SQL CHE MI PRENDE DA
>QUESTA TABELLA TUTTI I RECORD CON ID=1 MA MI DEVE FAR VISUALIZZARE
>SOLO IL RECORD CON IDCOMPONENTE =0
>E DARMI CONTEMPORANEAMENTE IL NUMERO TOTALE DEI RECORD SUPERIORE
>A 0 O COME DIRE TRANNE IL RECORD CHE HA IDCOMPONENTE =0
>
>IN ALTRE PAROLE IL RECORD CHE HA COME IDCOMPONENTE=0 E' L'UTENTE
>PRIMARIO E SOTTO DI SE FANNO CAPO ALTRI 4 UTENTI, NELLA LISTVIEW
>DI UNA WINFORM DOVRO' FAR APPARIRE
>SOLO IL RECORD PRIMARIO MA FAR VISUALIZZARE SOLO SOTTO FORMA
>DI NUMERO QUANTI RECORD SECONDARI GLI APPARTENGONO
Ciao Fabio,
prova a dare un'occhiata al seguente esempio:
USE tempdb;
CREATE TABLE dbo.Utenti(
ID int NOT NULL,
IDCOMPONENTE int NOT NULL,
COGNOME varchar(10) NOT NULL,
NOME varchar(10) NOT NULL,
CONSTRAINT PK_Utenti PRIMARY KEY(ID, IDCOMPONENTE)
);
INSERT dbo.Utenti VALUES(1, 0, 'ROSSI', 'MARIO');
INSERT dbo.Utenti VALUES(1, 1, 'CIRILLO', 'FABIO');
INSERT dbo.Utenti VALUES(1, 2, 'ROSSI', 'PIPPO');
INSERT dbo.Utenti VALUES(1, 3, 'VERDI', 'MARCO');
INSERT dbo.Utenti VALUES(1, 4, 'VERDI', 'SARA');
INSERT dbo.Utenti VALUES(2, 0, 'Benaglia', 'Lorenzo');
INSERT dbo.Utenti VALUES(2, 1, 'Bianchi', 'Luca');
INSERT dbo.Utenti VALUES(2, 2, 'Montanari', 'Andrea');
INSERT dbo.Utenti VALUES(2, 3, 'Hotz', 'Gianluca');
WITH CTE_Dipendenti(ID, Dipendenti) AS
(
SELECT ID, COUNT(*) - 1
FROM dbo.Utenti
GROUP BY ID
)
SELECT U.ID, U.Cognome, U.Nome, CTE.Dipendenti
FROM dbo.Utenti AS U
JOIN CTE_Dipendenti AS CTE
ON U.ID = CTE.ID
WHERE U.IDCOMPONENTE = 0;
/* Output:
ID Cognome Nome Dipendenti
----------- ---------- ---------- -----------
1 ROSSI MARIO 4
2 Benaglia Lorenzo 3
(2 row(s) affected)
*/
DROP TABLE dbo.Utenti;
>CIAO E GRAZIE
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org