Paulo, Dependendo do seu banco, as soluções podem diferir em muito no quesito performance. Mas a idéia é a seguinte- você quer um item de detalhe do registro mestre que obedece a um critério superlativo- é o máximo em termos de data de coleta (imagino).
SELECT P.<campo1>, P.<campo2>, ..., U.<campo1>, U.<campo2>, ... FROM Pacientes P INNER JOIN Urina U ON (P.CodPaciente = U.CodPaciente) WHERE U.DataColeta = (SELECT MAX(UI.DataColeta) FROM Urina UI WHERE UI.CodPaciente = P.CodPaciente) Agora perceba que essa sintaxe será admitida apenas pelos SGBDs que suportam subconsultas correlacionadas (correlated subqueries). Há um risco potencial caso seu campo DataColeta seja apenas *data* e não *data e hora* ou *timestamp* pois, se duas coletas forem realizadas no mesmo dia, o SELECT externo acima irá retornar aleatoriamente (do ponto de vista do usuário) um dos exames dessa data. Outra forma é a seguinte: SELECT P.<campo1>, P.<campo2>, ..., U.<campo1>, U.<campo2>, ... FROM Pacientes P INNER JOIN Urina U ON (P.CodPaciente = U.CodPaciente) INNER JOIN (SELECT UI.CodPaciente, MAX(UI.DataColeta) as DataColeta FROM Urina UI GROUP BY UI.CodPaciente) UMAX ON (UMAX.CodPaciente=U.CodPaciente AND UMAX.DataColeta=U.DataColeta) Nessa segunda forma, novamente você terá problemas com o banco caso não haja suporte para subconsultas na cláusula FROM. Se fosse comigo, e essa informação fosse realmente útil e consultada com muita freqüência, incluiria um campo redundante na tabela de paciente para identificar o último exame de urina realizado pelo paciente. Isso pode ser feito através de um trigger de inclusão na tabela de Exame de Urina. Existem outras formas de fazer. Cordialmente, Demian Lessa Salvador - Brasil Paulo Cesar Rohleder wrote: > Um bom dia a todos > > sou iniciante em SQL... e preciso urgente resolver este problema... > Tenho a tabela de pacientes... > CodPaciente > Paciente > etc.....(outros campos do paciente) > e a tabela de Urina > CodExameUrina > CodPaciente > Paciente > DataColeta > etc (outros campos do exame) > Digamos que voce seja um paciente e tenha feito na ultima semana dois exames > de urina e quero imprimir o resultado do ultimo exame... > Como faço isso em SQL -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] ou [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html