>A me interessa, in questi casi, che la mia query
>mi visualizzi solo 1 record per paziente con l'esito dell'esame
>più recente. Mi puoi dare qualche idea?
Ciao Roberto,
ti allego questo esempio in T-SQL per SQL Server, ma la stessa query puoi utilizzarla in Access:
USE tempdb;
GO
CREATE TABLE dbo.Pazienti(
PazienteID int NOT NULL PRIMARY KEY,
Nome varchar(10) NOT NULL,
Cognome varchar(10) NOT NULL
);
GO
CREATE TABLE dbo.Esami(
EsameID int NOT NULL PRIMARY KEY,
PazienteID int NOT NULL,
Esame varchar(20) NOT NULL,
Data datetime NOT NULL,
CONSTRAINT FK_Esami_Pazienti FOREIGN KEY(PazienteID)
REFERENCES dbo.Pazienti(PazienteID)
);
GO
INSERT dbo.Pazienti VALUES(1, 'Lorenzo', 'Benaglia');
INSERT dbo.Pazienti VALUES(2, 'Luca', 'Bianchi');
INSERT dbo.Pazienti VALUES(3, 'Andrea', 'Montnari');
INSERT dbo.Pazienti VALUES(4, 'Gianluca', 'Hotz');
INSERT dbo.Esami VALUES(1, 1, 'Esame1', '20060101');
INSERT dbo.Esami VALUES(2, 1, 'Esame2', '20060201');
INSERT dbo.Esami VALUES(3, 1, 'Esame3', '20060301');
INSERT dbo.Esami VALUES(4, 2, 'Esame4', '20060101');
INSERT dbo.Esami VALUES(5, 2, 'Esame5', '20060201');
INSERT dbo.Esami VALUES(6, 3, 'Esame6', '20060101');
INSERT dbo.Esami VALUES(7, 3, 'Esame7', '20060201');
INSERT dbo.Esami VALUES(8, 3, 'Esame8', '20060301');
INSERT dbo.Esami VALUES(9, 3, 'Esame9', '20060401');
INSERT dbo.Esami VALUES(10, 4, 'Esame10', '20060101');
GO
SELECT
P.Nome
, P.Cognome
, Q2.Esame
, Q2.Data
FROM dbo.Pazienti AS P
INNER JOIN (
SELECT E.*
FROM dbo.Esami AS E
INNER JOIN (
SELECT PazienteID, Max(Data) AS UltimoEsame
FROM dbo.Esami
GROUP BY PazienteID
) AS Q
ON E.PazienteID = Q.PazienteID
AND E.Data = Q.UltimoEsame
) AS Q2
ON P.PazienteID = Q2.PazienteID
ORDER BY P.PazienteID;
GO
/* Output:
Nome Cognome Esame Data
---------- ---------- -------------------- -----------------------
Lorenzo Benaglia Esame3 2006-03-01 00:00:00.000
Luca Bianchi Esame5 2006-02-01 00:00:00.000
Andrea Montnari Esame9 2006-04-01 00:00:00.000
Gianluca Hotz Esame10 2006-01-01 00:00:00.000
(4 row(s) affected)
*/
DROP TABLE dbo.Esami, dbo.Pazienti;
Prova a studiarla un attimino, non è complessa.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org