Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

consulta sql de tres tablas en una

Estas en el tema de consulta sql de tres tablas en una en el foro de Mysql en Foros del Web. Hola quiero hacer esta consulta sql d onde hay tres tablas, la tabla empresas, sucursal y trabajadores quisiera unir estas tres tablas saber el numero ...
  #1 (permalink)  
Antiguo 29/04/2013, 10:04
Avatar de don_fransisco  
Fecha de Ingreso: junio-2004
Mensajes: 193
Antigüedad: 19 años, 10 meses
Puntos: 1
consulta sql de tres tablas en una

Hola quiero hacer esta consulta sql d onde hay tres tablas, la tabla empresas, sucursal y trabajadores quisiera unir estas tres tablas saber el numero de empresas sus sucursales y el numero de trabajadores, como se puede hacer esta con sulta para que salga el numero de trabajadores por empresas y sucursal

tabla empresa
idEmpresa
nomEmpresa


tabla sucursal
idSucursal
idEmpresa
nomSucursal

tabla trabajadores
idTrabajador
idEmpresa
idSucursal
nomTrabajador

como puedo unir estas t res tablas en una tabla que muestre el numero de trabajadores por empresa y sucursal?


saludos
__________________
www.webeconomicas.cl
  #2 (permalink)  
Antiguo 29/04/2013, 10:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: consulta sql de tres tablas en una

¿El problema es de código PHP o acerca de como construir la consulta con SQL?

Porque vamos, entiendo que no sabes como redactar la consulta, pero eso ya es tema de SQL y no de PHP.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 29/04/2013, 10:35
Avatar de don_fransisco  
Fecha de Ingreso: junio-2004
Mensajes: 193
Antigüedad: 19 años, 10 meses
Puntos: 1
Respuesta: consulta sql de tres tablas en una

Claro es de como construir la consulta con sql

saludos
__________________
www.webeconomicas.cl
  #4 (permalink)  
Antiguo 29/04/2013, 10:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta sql de tres tablas en una

Ajá... ¿Y has intentado algo?
Postea lo que probaste,para ver por donde te falla.

Estoy suponiendo que al menos conoces SQL básico.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 29/04/2013, 10:45
Avatar de don_fransisco  
Fecha de Ingreso: junio-2004
Mensajes: 193
Antigüedad: 19 años, 10 meses
Puntos: 1
Respuesta: consulta sql de tres tablas en una

He probado asi pero me salen lista de tabla empresas con la tabla sucursal pero no me salen el numero de trabajadores que hay en cada sucursal

SELECT * FROM ( empresa INNER JOIN sucursal ON empresa.codigo = sucursal.cod_empresa)INNER JOIN trabajador ON trabajador.cod_empresa = sucursal.cod_empresa
__________________
www.webeconomicas.cl
  #6 (permalink)  
Antiguo 29/04/2013, 11:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta sql de tres tablas en una

No te lo devuelve, porque no lo estás pidiendo.
Esa consulta devuelve un registro por cada empleado de cada sucursal, de cada empresa.
Si lo que quieres es el numero de empleados por empresa, debes contar agrupando por empresa, para lo cual, por el esquema que pones en el post, no necesitas el idSucursal:
Código MySQL:
Ver original
  1. SELECT E.nomEmpresa, COUNT(*) Empleados
  2.   FROM empresa E
  3.        INNER JOIN trabajador T ON S.idSucursal = T.idSucursal
  4. GROUP BY E.codigo
Y si lo que quieres es contar por cada sucursal de cada empresa, debes agrupar por empresa y por sucursal:
Código MySQL:
Ver original
  1. SELECT E.nomEmpresa, S.nomSucursal, COUNT(*) Empleados
  2.   FROM empresa E
  3.        INNER JOIN sucursal S ON E.idEmpresa = S.idEmpresa
  4.        INNER JOIN trabajador T ON S.idEmpresa = T.idEmpresa AND S.idSucursal = T.idSucursal
  5. GROUP BY E.idEmpresa, S.idSucursal;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 29/04/2013, 12:13
Avatar de don_fransisco  
Fecha de Ingreso: junio-2004
Mensajes: 193
Antigüedad: 19 años, 10 meses
Puntos: 1
Respuesta: consulta sql de tres tablas en una

Esta muy bien pero cuando pongo esta consulta me cuenta solo los trabajadores de la empresa no cuenta los trabajadores que hay en la sucursal

Cita:
SELECT E.nomEmpresa, S.nomSucursal, COUNT(*) Empleados
FROM empresa E
INNER JOIN sucursal S ON E.idEmpresa = S.idEmpresa
INNER JOIN trabajador T ON S.idEmpresa = T.idEmpresa AND S.idSucursal = T.idSucursal
GROUP BY E.idEmpresa, S.idSucursal;

Como tendria que ir la consulta para que me cuente tambien los trabajadores que hay en la sucursal y muestre asi


Cita:
id - empresa sucursal numero trabajadores
1 emp1 x1 100
2 emp1 x2 10
3 emp1 x3 20
4 emp2 a1 1

saludos
__________________
www.webeconomicas.cl
  #8 (permalink)  
Antiguo 29/04/2013, 12:17
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta sql de tres tablas en una

Cita:
Iniciado por don_fransisco Ver Mensaje
Esta muy bien pero cuando pongo esta consulta me cuenta solo los trabajadores de la empresa no cuenta los trabajadores que hay en la sucursal
Esta consulta agrupa como te dije: Por Empresa y Sucursal, devolviendo un único registro con cada par Emrpesa+Sucursal y la cantidad de empleados registrados den cada sucursal:
Código MySQL:
Ver original
  1. SELECT E.nomEmpresa, S.nomSucursal, COUNT(*) Empleados
  2.   FROM empresa E
  3.        INNER JOIN sucursal S ON E.idEmpresa = S.idEmpresa
  4.        INNER JOIN trabajador T ON S.idEmpresa = T.idEmpresa AND S.idSucursal = T.idSucursal
  5. GROUP BY E.idEmpresa, S.idSucursal;

En el contexto de lo que describes, debe devolver exactamente lo mismo que propones.

Es la primera donde sólo se cruzan empresa y empelado, por tanto no se trata del mismo resultado.

¿La probaste?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: php, sql, tabla, tablas, tres
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:18.