>Ho provato con la INNER JOIN ma non ci riesco proprio... Ci sono
>sempre riuscitò finchè ho avuto una sola relazione in gioco,
>ma in questo caso ho due relazioni che fanno riferimento alla
>stessa tabella e non so che fare.
Ciao Igor,
Non devi fare altro che eseguire due JOIN con la tabella Destinazioni come nel seguente esempio:
USE tempdb;
CREATE TABLE dbo.Destinazioni(
IDCitta int NOT NULL PRIMARY KEY,
NomeCitta varchar(10) NOT NULL
);
CREATE TABLE dbo.Tratte(
IDTratta int NOT NULL PRIMARY KEY,
IDCitta_DA int NOT NULL,
IDCitta_A int NOT NULL,
CONSTRAINT FK_Tratte_Da FOREIGN KEY(IDCitta_DA)
REFERENCES dbo.Destinazioni(IDCitta),
CONSTRAINT FK_Tratte_A FOREIGN KEY(IDCitta_A)
REFERENCES dbo.Destinazioni(IDCitta)
);
INSERT dbo.Destinazioni VALUES
(1, 'Roma')
, (2, 'Milano')
, (3, 'Torino');
INSERT dbo.Tratte VALUES
(1, 1, 2)
, (2, 1, 3)
, (3, 2, 3);
SELECT
D1.NomeCitta AS Da
, D2.NomeCitta AS A
FROM dbo.Tratte AS T
JOIN dbo.Destinazioni AS D1
ON T.IDCitta_DA = D1.IDCitta
JOIN dbo.Destinazioni AS D2
ON T.IDCitta_A = D2.IDCitta;
/* Output:
Da A
---------- ----------
Roma Milano
Roma Torino
Milano Torino
(3 row(s) affected)
*/
DROP TABLE dbo.Tratte, dbo.Destinazioni;
>Grazie.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org