>Come faccio ad ottenere un solo TITOLO indipendentemente dal
>numero dei record presenti nella tabella CREDITS collegata ???
Ciao Simone,
Dato che ad 1 spettacolo corrispondono n credits, per ottenere quello che chiedi occorre rispondere alla seguente domanda:
considerando tutte le qualifiche associate ad un titolo, quale vuoi restituire?
Osserva il seguente esempio:
USE tempdb;
CREATE TABLE dbo.Spettacoli(
SpettacoloID int NOT NULL PRIMARY KEY,
Titolo varchar(15) NOT NULL
);
CREATE TABLE dbo.Credits(
CreditID int NOT NULL PRIMARY KEY,
SpettacoloID int NOT NULL,
Qualifica varchar(15) NOT NULL,
CONSTRAINT FK_Credits_Spettacoli FOREIGN KEY(SpettacoloID)
REFERENCES dbo.Spettacoli(SpettacoloID)
);
INSERT dbo.Spettacoli VALUES(1, 'Spettacolo 1');
INSERT dbo.Spettacoli VALUES(2, 'Spettacolo 2');
INSERT dbo.Spettacoli VALUES(3, 'Spettacolo 3');
INSERT dbo.Credits VALUES(1, 1, 'Qualifica 1');
INSERT dbo.Credits VALUES(2, 1, 'Qualifica 2');
INSERT dbo.Credits VALUES(3, 1, 'Qualifica 3');
INSERT dbo.Credits VALUES(4, 2, 'Qualifica 4');
INSERT dbo.Credits VALUES(5, 2, 'Qualifica 5');
/* Tua query */
SELECT DISTINCT S.Titolo, C.Qualifica
FROM dbo.Spettacoli AS S
INNER JOIN dbo.Credits AS C
ON S.SpettacoloID = C.SpettacoloID;
/* Output:
Titolo Qualifica
--------------- ---------------
Spettacolo 1 Qualifica 1
Spettacolo 1 Qualifica 2
Spettacolo 1 Qualifica 3
Spettacolo 2 Qualifica 4
Spettacolo 2 Qualifica 5
(5 row(s) affected)
*/
/* Mia query */
SELECT S.Titolo, MAX(C.Qualifica) AS Qualifica
FROM dbo.Spettacoli AS S
INNER JOIN dbo.Credits AS C
ON S.SpettacoloID = C.SpettacoloID
GROUP BY S.Titolo;
/* Output:
Titolo Qualifica
--------------- ---------------
Spettacolo 1 Qualifica 3
Spettacolo 2 Qualifica 5
(2 row(s) affected)
*/
DROP TABLE dbo.Credits, dbo.Spettacoli;
Come vedi nella seconda query ho utilizzato la funzione di aggregazione MAX() che restituisce la "massima qualifica" relativa ad un certo titolo.
Se il tuo intento era differente ti invito a indicarci chiaramente il result set che vorresti ottenere partendo dall'esempio proposto.
>grazie.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org