Ir a contenido


Foto
- - - - -

Problemas Con Bases De Datos Y Excel


  • Please log in to reply
2 replies to this topic

#1 mpluss

mpluss

    Advanced Member

  • Hentais
  • PipPip
  • 828 Mensajes:

Escrito 11 June 2010 - 02:09 AM

Hola, pues tengo un problema, cada mes me pasan un archivo en excel que contiene toda la información de los trabajadores de una empresa, esta empresa tiene bases en diferentes localidades del país, y a mi me han estado pidiendo que de ese archivo de excel cada mes saque un listado con los trabajadores que tienen el mismo puesto en la misma localidad (exactamente el mismo) para toda la empresa.

Esta vez la he sacado con una tabla dinámica que me muestra cuales son los puestos duplicados y a manita he buscado los puestos que se repiten en la base de acuerdo a lo que me avienta este listado, el problema es que hacer esto es totalmente ineficiente.

Lo intenté hacer en access cuando iba por ahí de la mitad del trabajo, pero no pude ya que access no lo sé usar ni bien. Así que por esta vez lo hice como he comentado.

El problema reside en que los puestos realmente se repiten por que sólo dice: "Jefe", y yo tengo que hacer el match con el departamento para que me salga "Resurtido" "Jefe" y así tengo que hacer la tabla dinámica.

Los campos el archivo que me envían vienen siendo algo así:

Id_empleado | Nombre_Empleado | Localidad | Cve_Puesto | Puesto | Cve Depto | Departamento |

Yo lo que hago para generar la tabla dinámica es que arrastro la localidad al principio, luego el departamento y al final el puesto y le digo que cuente cuántos hay ahí para que me diga cuáles son, y queda algo así:

Localidad | Departamento | Puesto | Suma: Nombre_Empleado
Monterrey Resurtido Jefe | 2
Monterrey Compras Jefe | 1
Monterrey Compras SubJefe | 1


Una vez que tengo esta tabla voy al archivo plano y busco con el filtro la localidad monterrey, luego el departamento y al final el puesto para que yo copie y pegue en un archivo nuevo lo siguiente:


Id_Empleado | Nombre_Empleado | Localidad | ClavePuesto | Puesto | CveDepto | Departamento
11111 Juan Perez Monterrey 1 Jefe 12 Compras
22222 Rodrigo Perez Monterrey 1 Jefe 12 Compras


El resultado es un listado de las personas que comparten el mismo puesto en el mismo departamento de la misma localidad. Esto es lo que yo necesito sacar del archivo plano que tengo en excel.

Y mi duda viene a esto:

Al intentar trabajarlo con access importé mi archivo plano con la info a BD. Luego generé el listado con los repetidos en excel con tablas dinámicas. El formato del archivo de tabla dinámica quedó como anteriormente puse:

Localidad | Departamento | Puesto Suma: Nombre_Empleado
Monterrey Resurtido Jefe 2

(En este caso sólo tomo los que en la suma del nombre empleado es mayor a uno, osea que se puesto lo comparten dos o más personas).

Ese archivo que ya generé lo importé también a access. Y por último intenté hacer una consulta que dijera algo así:

(Al archivo plano le llamo plantillagral, al listado de excel lo llamé repetido)

SELECT plantillagral.Id_empleado, plantillagral.Nombre_Empleado, plantillagral.Localidad, plantillagral.Cve_Puesto, plantillagral.Puesto, plantillagral.Cve Depto, plantillagral.Departamento
FROM plantillagral, repetido
WHERE ((plantillagral.Localidad = repetido.Localidad) AND (plantillagral.Departamento = repetido.Departamento) AND (plantillagral.Puesto = repetido.puesto)) ;

(la consulta no es un copy paste, ya que estoy en casa pq en el trabajo no tengo acceso a internet, lo que puse es la idea de cómo lo hice).

Total que al ejecutar la consulta de los 100 puestos que tenía repetidos (en el listado de excel), sólo me aventó 20 y en varios casos ni si quiera estaban repetidos.

Ahora hago la pregunta, alguien tiene una idea de cómo mejorar este proceso??? o cómo debería hacer la consulta en access? o cómo hacerlo sin tener que estar buscando a "mano" en el archivo plano?

Gracias por sus comentarios
I learned from Densha. No matter how bad, he was never crushed, no matter what happened, his heart always believed in his beloved!!!

#2 Takamura

Takamura

    Señor del Japón

  • FL Fansub
  • 2706 Mensajes:

Escrito 11 June 2010 - 07:42 AM

No he entendido muy bien lo que has hecho (entre otras cosas porque no uso Excel) pero, suponiendo que tengas una sola tabla en la base de datos llamada A con el formato:

Id_empleado | Nombre_Empleado | Localidad | Cve_Puesto | Puesto | Cve Depto | Departamento |

la consulta SQL para sacar lo que dices sería:

select
 B1.Id_empleado as Id_empleado1, B1.Nombre_Empleado as Nombre_Empleado1,
 B2.Id_empleado as Id_empleado2, B2.Nombre_Empleado as Nombre_Empleado2,
 B1.Localidad as Localidad, B1.Cve_Puesto as Cve_Puesto, B1.Puesto as Puesto
from
 A B1, A B2
where
 B1.Localidad = B2.Localidad and B1.Cve_Puesto = B2.Cve_Puesto and B1.Id_empleado <> B2.Id_empleado
order by
 Localidad, Puesto, Nombre_Empleado1

Lo único malo de esta consulta es que repite todo dos veces. Si Id_empleado es un número se puede poner B1.Id_empleado < B2.Id_empleado en vez de B1.Id_empleado <> B2.Id_empleado y ya no hay repeticiones.

Aquí hay una pequeña guía del SQL: http://www.postgresq...c/tutorial.html

Este tema ha sido editado por Takamura: 11 June 2010 - 08:00 AM

El nacionalismo es la religión de los engreídos.

#3 mpluss

mpluss

    Advanced Member

  • Hentais
  • PipPip
  • 828 Mensajes:

Escrito 12 June 2010 - 01:53 PM

No he entendido muy bien lo que has hecho (entre otras cosas porque no uso Excel) pero, suponiendo que tengas una sola tabla en la base de datos llamada A con el formato:

Id_empleado | Nombre_Empleado | Localidad | Cve_Puesto | Puesto | Cve Depto | Departamento |

la consulta SQL para sacar lo que dices sería:

select
 B1.Id_empleado as Id_empleado1, B1.Nombre_Empleado as Nombre_Empleado1,
 B2.Id_empleado as Id_empleado2, B2.Nombre_Empleado as Nombre_Empleado2,
 B1.Localidad as Localidad, B1.Cve_Puesto as Cve_Puesto, B1.Puesto as Puesto
from
 A B1, A B2
where
 B1.Localidad = B2.Localidad and B1.Cve_Puesto = B2.Cve_Puesto and B1.Id_empleado <> B2.Id_empleado
order by
 Localidad, Puesto, Nombre_Empleado1

Lo único malo de esta consulta es que repite todo dos veces. Si Id_empleado es un número se puede poner B1.Id_empleado < B2.Id_empleado en vez de B1.Id_empleado <> B2.Id_empleado y ya no hay repeticiones.

Aquí hay una pequeña guía del SQL: http://www.postgresq...c/tutorial.html


Antes que nada gracias por tu respuesta, ya sólo le agregaré al query el último campo de departamento y ya les contaré el lunes cómo me fue.

Saludos !
I learned from Densha. No matter how bad, he was never crushed, no matter what happened, his heart always believed in his beloved!!!




0 usuarios están leyendo este tema

0 miembros, 0 invitados, 0 usuarios anónimos