Para este ejemplo se crea una tabla de "personas" y otra de "entradas por persona".
Se rellenan con registros estas tablas. Notar que el señor MARX no cuenta con registros de entradas.
A continuación está el SELECT que muestra cuál es la última entrada de cada persona.
Para el caso del señor MARX aparece con valor nulo... Porque no hay registro de sus entradas.
if exists (select * from sys.objects where name = 'zzz_entradaxpersona') drop table zzz_entradaxpersona; if exists (select * from sys.objects where name = 'zzz_persona') drop table zzz_persona; create table zzz_persona (ID int identity (1, 1) not null, NOMBRE varchar(100), primary key (ID)); create table zzz_entradaxpersona ( ID int identity (1, 1), PERSONA_ID int, HORA datetime not null, primary key (ID), constraint fk_entradaxpersona_persona foreign key (PERSONA_ID) references zzz_persona (ID) ); go set nocount on; insert into zzz_persona (NOMBRE) values ('JUAN'), ('PACO'), ('PEDRO'), ('MAR'), ('MARX'); insert into zzz_entradaxpersona (PERSONA_ID, HORA) values (1, '2017-11-11 15:00'), (1, '2017-11-12 15:01'), (1, '2017-11-13 14:59'), (2, '2017-11-11 14:30'), (2, '2017-11-12 15:10'), (2, '2017-11-13 14:50'), (3, '2017-11-10 20:00'), (3, '2017-11-12 20:05'), (3, '2017-11-13 20:10'), (4, '2017-11-12 15:30'), (4, '2017-11-12 18:22'), (4, '2017-11-12 20:59'); set nocount off; select a.ID, a.NOMBRE, b.ULTIMA_ENTRADA from zzz_persona a left outer join ( select PERSONA_ID, max(HORA) as ULTIMA_ENTRADA from zzz_entradaxpersona group by PERSONA_ID ) b on b.PERSONA_ID = a.ID; go if exists (select * from sys.objects where name = 'zzz_entradaxpersona') drop table zzz_entradaxpersona; if exists (select * from sys.objects where name = 'zzz_persona') drop table zzz_persona; go
ID NOMBRE ULTIMA_ENTRADA ----------- ------- ----------------------- 1 JUAN 2017-11-13 14:59:00.000 2 PACO 2017-11-13 14:50:00.000 3 PEDRO 2017-11-13 20:10:00.000 4 MAR 2017-11-12 20:59:00.000 5 MARX NULL (5 row(s) affected)
Política de PrivacidadÚltima actualización: 23 de diciembre de 2024 |
X |
Tu privacidad es importante para nosotros. En esta política de privacidad, explicamos qué información recopilamos cuando visitas nuestro sitio web y cómo utilizamos esa información.
Este sitio no recopila información personal de los usuarios, excepto cuando un usuario elige voluntariamente comunicarse a través del formulario de contacto. En ese caso, los datos proporcionados (como tu nombre y correo electrónico) se utilizarán únicamente para responder a tu consulta.
Este sitio web utiliza una única cookie esencial llamada PHPSESSID
.
PHPSESSID
se utiliza exclusivamente en la página de contacto para gestionar el funcionamiento del CAPTCHA. Esto garantiza que el formulario de contacto funcione correctamente y evita envíos automáticos o maliciosos.No usamos cookies de análisis ni de seguimiento.
Adoptamos medidas técnicas y organizativas razonables para proteger cualquier información que compartas con nosotros contra el acceso no autorizado, pérdida o alteración.
Nuestro sitio web puede contener enlaces a otros sitios web. No somos responsables de las prácticas de privacidad ni del contenido de dichos sitios.
Nos reservamos el derecho de actualizar esta política de privacidad en cualquier momento. Cualquier cambio será publicado en esta misma página e incluirá la fecha de la última actualización.
Si tienes preguntas o inquietudes sobre esta política de privacidad, puedes comunicarte con nosotros a través de la página de contacto disponible en este sitio web.
Nuestro sitio web cumple con las principales regulaciones internacionales de protección de datos personales para garantizar la privacidad y seguridad de los usuarios. Esto incluye, pero no se limita a, las siguientes leyes:
Si tienes preguntas o dudas sobre el cumplimiento de estas leyes, no dudes en ponerte en contacto conmigo a través de la página de contacto de este sitio web.