Hola arleycalderon:
Vayamos por partes, en primer lugar tendrías que decirnos de qué tipo de dato es tu columna
fecha, supongo que será date o datetime, pero este dato es muy importante por la cuestión de las horas... si estás almacenando sólo la fecha entonces es de tipo DATE, pero si estás almacenando la fecha y la hora entonces es DATETIME y tienes que hacer un tratamiento especial para no considerar las horas.
Segundo, para comparar contra la fecha actual no hay necesidad de que pongas esto:
Código:
...
a.fecha = (select date (now()))
por un lado, es un desperdicio que utilices la función now() que trae fecha y hora si después vas a aplicar la función date() para extraer sólo la fecha... si hubieras revisado a conciencia las
funciones de fecha y hora te habrías dado cuenta que con CURDATE() lo obtienes directo... entonces la comparación quedaría así:
Si tu campo fecha es DATE.
Si tu campo fecha es datetime.
Código:
...
DATE(a.fecha) = CURDATE()
Ahora bien, tu nos comentas esto:
Cita: lo que busco es que me muestre las personas que no están registradas en la fecha actual
Según esta lógica entonces hay dos posibilidades para mostrar a una persona, una sería que NO EXISTA EN LA TABLA TREGISTRO... en este caso es correcta la comparación que haces al preguntar
Código:
...
WHERE
a.Tpersona_id IS NULL
Sin embargo, según el enunciado que tienes, también debería mostrar aquellos registros QUE SI EXISTAN EN LA TABLA TREGISTRO PERO QUE LA FECHA DE REGISTRO NO SEA LA FECHA ACTUAL...
Tal como estás poniendo la condición ES OBVIO QUE SIEMPRE DE DARÁ UNA CONSULTA VACIA, porque por un lado estás comprobando que no exista en la tabla de registros pero al mismo tiempo le dices que la fecha del ese registro no sea la actual... eso es tan absurdo como querer encontrar un numero que sea par pero que no sea divisible entre 2
.
La consulta podría quedar así:
Si continuas con problemas postea algunos datos de ejemplo de tus tablas
Saludos
Leo.