MySQL - Ayuda urgente con consulta en MySQL

 
Vista:
sin imagen de perfil

Ayuda urgente con consulta en MySQL

Publicado por Jaider José (3 intervenciones) el 27/04/2017 15:53:53
Hola buen día a todos agradezco sus colaboraciones y respuestas de antemano.
Tengo una consulta en mysql que me está sacando canas jeje, se trata de una consulta con fechas. Tengo dos bases de datos diferentes, en una de las bd se encuentra una tabla llamada turno que contiene las fechas del turno de un trabajador en el mes (DATETIME). en la otra bd estan los días del mes en que que esos usuarios ingresaron. Muchos de estos usuarios no registran su llegada al turno todos los días, por lo tanto a la hora de hacer una subconsulta donde me compare las dos tablas solo me muestra las columnas de la tabla turno comparadas con las columnas de la tabla de ingreso donde los empleados registraron su turno, lo que quiero es que me aparezcan todos los datos de la tabla turno comparados con la tabla de ingreso y donde no ingresaron o se registraron muestre NULL o algo parecido. Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Ayuda urgente con consulta en MySQL

Publicado por leonardo_josue (414 intervenciones) el 27/04/2017 20:23:55
Hola Jaider José:

No me quedó muy claro cómo es tu esquema de tablas, pero por lo que comentas, creo que basta con que hagas un LEFT o un RIGTH JOIN...

Si no sabes cómo funcionan estos, puedes preguntarle a SANTA WIKIPEDIA:

https://es.wikipedia.org/wiki/Join

Si necesitas más ejemplos de su uso, puedes encomendarte a SAN GOOGLE:

http://lmgtfy.com/?q=Ejemplos+LEFT+JOIN

Si aun después de esto continuas con problemas, entonces postea la estructura de tus tablas y pon algunos datos de ejemplo, a partir de los datos de ejemplo dinos qué es lo que esperas obtener como salida. También postea las consultas que intentes hacer así como los errores y problemas que tuviste, de esta manera te podremos indicar qué hay que corregir o sugerirte alguna otra respuesta.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda urgente con consulta en MySQL

Publicado por Jaider José (3 intervenciones) el 04/05/2017 18:00:28
Hola Leonardo gracias por tu respuesta, tienes razón tal ves no fui muy explicito con mi pregunta. Verás tengo dos bd (bd1 y bd2). La bd1 tiene una bd1. tablaX que almacena un id de la persona y la hora en la que se logueo en la plataforma de acceso a la compañia (tiene muchos más datos est).a tabla pero no me interesan los otros). La bd2 contiene una bd2.tablaY que almacena los turnos en que esa persona debe laborar en el mes. He intentado con inner, left, right, hacer una consulta entre la tablaX y la tablaY que me muestre el id, el turno y al frente del turno la fecha de login que coincida con el turno, por el contrario si no se logueo que aparezca al frente al frente del turno NULL o algo asi.

1
2
3
4
5
6
7
8
9
SELECT T.ID_FUNCIONARIO, T.FECHA, o.punch_in_user_time
FROM REPORTE_ORANGE.TURNO T
LEFT JOIN orangehrm_mysql.ohrm_attendance_record o ON DATE( T.FECHA )
IN (
DATE( o.punch_in_user_time )
)
WHERE T.ID_FUNCIONARIO = o.employee_id
AND o.punch_in_user_time >=  '2017-03-01 00:00:00'
AND o.punch_out_user_time <=  '2017-03-31 23:59:00'

He intentado con esta consulta pero no me muestra los turnos donde el empleado no se logueo, solo me muestra los turnos donde si se logueo. Agradezco tu ayuda de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha aumentado su posición en 4 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Ayuda urgente con consulta en MySQL

Publicado por Hugo qn (32 intervenciones) el 04/05/2017 18:20:41
Hola Jaider, si las condiciones de fecha pones en bloque WHERE de nada sirve el LEFT pues se convierte en INNER, todos los filtros relacionado a la tabla de logueo pon en el mismo bloque de LEFT.

o ON DATE(T.FECHA) IN (DATE(o.punch_in_user_time))
AND T.ID_FUNCIONARIO = o.employee_id
AND o.punch_in_user_time >= '2017-03-01 00:00:00'
AND o.punch_out_user_time <= '2017-03-31 23:59:00'

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Ayuda urgente con consulta en MySQL

Publicado por Jaider José (3 intervenciones) el 04/05/2017 19:45:25
Hugoo eres un crack! muchas gracias por tu ayuda, tu respuesta fue acertada y oportuna. Aún no puedo creer que haya dejado pasar ese gran detalle! jajaaja .

Leonardo muchas gracias también por su respuesta!

Saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar