MySQL - Consulta desde varias tablas

   
Vista:

Consulta desde varias tablas

Publicado por Carlos (3 intervenciones) el 31/05/2014 01:27:33
Hola, acudo a ustedes porque no puedo resolver un problema con una consulta...basicamente poseo 5 tablas

1. datos_pers
id_emple - id_nombre - id_ap_pat - id_ap-mat

2. c_nombres
id_nombre - nombre

3. c_apellido
id_ape - apellido

4.checadas
id_chec - id_emple - fecha - hora - id_estado

5. estados
id_estado - estado

Lo que deseo hacer es imprimir la tabla de chacadas para ver el ingreso de los empleados pero en vez de mostrar el id_emple (id del empleado) debo mostrar su nombre completo, que obviamente es arrojado desde 2 catalogos (nombres y apellidos)...lo que he logrado hasta ahora es esta consulta:

1
2
3
4
5
6
7
8
select a.id, a.id_emple, nombre, a.hora, a.fecha, c4.descripcion as estado from checadas a inner join
   (select CONCAT (c1.nombre,' ',c2.apellido,' ',c3.apellido) as nombre from datos_pers b
	left join c_nombre c1 on b.id_nombre=c1.id_nombre
	left join c_apellidos c2 on b.id_ap_pat=c2.id_ape
	left join c_apellidos c3 on b.id_ap_mat=c3.id_ape
  )tx
	left join c_estatus c4 on a.estado=c4.id
	order by fecha desc, hora desc

lo que me genera resultados repetidos ....
por lo que les pido su ayuda para lograr resolver este dilema..
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
Imágen de perfil de xve

Consulta desde varias tablas

Publicado por xve (899 intervenciones) el 31/05/2014 11:12:42
Hola Carlos, según veo, ya tienes la tabla datos_pers en la consulta, por lo que ya puedes obtener los nombres de los empelados, no?

No se si no te he entendido bien...
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

Consulta desde varias tablas

Publicado por Carlos (3 intervenciones) el 31/05/2014 15:17:55
asi es...el problema es que genera resultados repetidos para cada entrada en checadas...es decir

el empleado 5 checo a las 10:00 y a las 14:00 del día 30-05-2014, esto en la tabla de checadas queda asi

id_chec - id_emple - hora - fecha - estado
8 - 5 - 10:00 - 30-05-2014 - 1
15 - 5 - 14:00 - 30-05-2014 - 1

El problema es que al hacer la consulta me genera esto
id_chec - id_emple - nombre - hora - fecha - estado
15-------- 5---------Alberto Alba - 10:00 - 30-05-2014 - falta
15-------- 5---------Alberto Sales - 10:00 - 30-05-2014 - falta
15-------- 5---------Alan VAsconcelos - 10:00 - 30-05-2014 - falta
15-------- 5---------Carlos Angeles- 10:00 - 30-05-2014 - falta

es decir un resultado por cada empleado...
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

Consulta desde varias tablas

Publicado por Carlos (3 intervenciones) el 31/05/2014 16:08:19
Creo que estaba trabajando de más...la consulta al final quedo de esta manera...

select a.id, CONCAT(c1.nombre,' ',c2.apellido,' ',c3.apellido) as nombre, a.hora, a.fecha,c4.descripcion as estado from checadas a
inner join datos_pers b
inner join c_nombre c1 on c1.id_nombre=b.id_nombre
inner join c_apellidos c2 on c2.id_ape=b.id_ap_pat
inner join c_apellidos c3 on c3.id_ape=b.id_ap_mat
inner join c_estatus c4 on c4.id= a.estado
where a.id_emple = b.id_emple
order by fecha desc, hora desc

gracias por su apoyo!
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

Consulta desde varias tablas

Publicado por James (1 intervención) el 31/05/2014 19:20:29
Hola mi hermano, veo que te preocupan esos resultados repetidos, para eso te recomiendo que uses la clausula DISTINCT. Mira aqui varios ejemplos de como usarla:

http://hermosaprogramacion.blogspot.com/2014/05/distinct-sql.html
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