>>Ora, per quale motivo la tabella Immobile ha la colonna idfoto?
>E' una mia svista. Sarebbe idimmobile.
Non ho capito.
Di che idimmobile stai parlando?
Io mi riferivo alle due CREATE TABLE che sono concettualmente errate.
Facciamo così, ti posto l'esempio riveduto:
USE tempdb;
CREATE TABLE dbo.Immobile(
idimmobile int IDENTITY(1,1) NOT NULL,
prezzo decimal(9, 2) NOT NULL,
visibile bit NOT NULL,
CONSTRAINT PK_Immobile PRIMARY KEY(idimmobile)
);
CREATE TABLE dbo.Foto(
idfoto int IDENTITY(1,1) NOT NULL,
nomefile nvarchar(255) NOT NULL,
idimmobile int NOT NULL,
CONSTRAINT PK_Foto PRIMARY KEY(idfoto),
CONSTRAINT FK_Foto_Immobile FOREIGN KEY(idimmobile)
REFERENCES dbo.Immobile(idimmobile)
);
INSERT dbo.Immobile VALUES
(10000.00, 1)
, (20000.00, 1);
INSERT dbo.Foto VALUES
('foto1.jpg', 1)
, ('foto2.jpg', 1)
, ('foto3.jpg', 1)
, ('foto4.jpg', 2)
, ('foto5.jpg', 2);
WITH CTE_GetFoto AS
(
SELECT MIN(idfoto) AS idfoto
FROM dbo.Foto
GROUP BY idimmobile
)
SELECT
I.idimmobile
, I.prezzo
, I.visibile
, F.nomefile
FROM dbo.Immobile AS I
JOIN dbo.Foto AS F
ON I.idimmobile = F.idimmobile
JOIN CTE_GetFoto AS CTE
ON F.idfoto = CTE.idfoto;
/* Output:
idimmobile prezzo visibile nomefile
----------- --------- -------- ----------
1 10000.00 1 foto1.jpg
2 20000.00 1 foto4.jpg
(2 row(s) affected)
*/
DROP TABLE dbo.Foto, dbo.Immobile;
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org