>Come faccio ad avere nomeproprietario da una select fatta su
>negozi?
Ciao Vincenzo,
Si tratta di 3 tabelle in relazione 1-a-molti e intendi recuperare una colonna dalla prima ed una dalla terza.
Per ottenere questo risultato sarà sufficiente eseguire una INNER JOIN tra la prima e la seconda tabella, il cui result set risultante lo metterai nuovamente in JOIN con la terza.
Osserva il seguente esempio:
USE tempdb;
CREATE TABLE dbo.proprietario(
idprop int NOT NULL PRIMARY KEY,
nomeproprietario varchar(10) NOT NULL
);
CREATE TABLE dbo.catena(
idcatena int NOT NULL PRIMARY KEY,
nomecatena varchar(10) NOT NULL,
idprop int NOT NULL,
CONSTRAINT FK_catena_proprietario FOREIGN KEY(idprop)
REFERENCES dbo.proprietario(idprop)
);
CREATE TABLE dbo.negozi(
idnegozio int NOT NULL PRIMARY KEY,
nomenegozio varchar(10) NOT NULL,
idcatena int NOT NULL,
CONSTRAINT FK_negozi_catena FOREIGN KEY(idcatena)
REFERENCES dbo.catena(idcatena)
);
INSERT dbo.proprietario
VALUES (1, 'Lorenzo')
, (2, 'David')
, (3, 'Andrea');
INSERT dbo.catena
VALUES (10, 'Catena 1', 1)
, (20, 'Catena 2', 1)
, (30, 'Catena 3', 3)
, (40, 'Catena 4', 2);
INSERT dbo.negozi
VALUES (100, 'Negozio 1', 10)
, (200, 'Negozio 2', 40)
, (300, 'Negozio 3', 30)
, (400, 'Negozio 4', 30);
SELECT N.nomenegozio, P.nomeproprietario
FROM dbo.proprietario AS P
JOIN dbo.catena AS C
ON P.idprop = C.idprop
JOIN dbo.negozi AS N
ON C.idcatena = N.idcatena;
/* Output:
nomenegozio nomeproprietario
----------- ----------------
Negozio 1 Lorenzo
Negozio 2 David
Negozio 3 Andrea
Negozio 4 Andrea
(4 row(s) affected)
*/
DROP TABLE dbo.negozi, dbo.catena, dbo.proprietario;
>Grazie mille
Prego.
Ciao!
--
Lorenzo Benaglia
http://blogs.dotnethell.it/lorenzo/