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

Consulta a varias tablas

Estas en el tema de Consulta a varias tablas en el foro de Mysql en Foros del Web. Hola buenas tardes! tengo que realizar una consulta para mostrar lo siguiente: Empresa | SubTotal Pepito | 460 Pedrito | 208 Total | 668 El ...
  #1 (permalink)  
Antiguo 03/05/2012, 14:46
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 1
Consulta a varias tablas

Hola buenas tardes!

tengo que realizar una consulta para mostrar lo siguiente:

Empresa | SubTotal
Pepito | 460
Pedrito | 208
Total | 668


El problema es que esta informacion la tengo repartida en 3 tablas:

tabla empresas
id | empresa

tabla grupos
id | grupo | empresa

tabla horas
id | id_grupo | fee_empresa | duracion


El total se calcula fee_empresa * duracion.

En la tabla horas hay varios 'id_grupo' repetidos, ya que se cargan varias horas x mes.

Es un poco complejo el tema, desde ya muchas gracias por la ayuda!
__________________
Bye!
  #2 (permalink)  
Antiguo 04/05/2012, 02:31
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta a varias tablas

Código MySQL:
Ver original
  1. SELECT e.empresa,SUM(h.fee_empresa * h.duracion)
  2. FROM (e.empresas INNER JOIN grupos g ON e.empresa=g.empresa)
  3. INNER JOIN horas h ON g.id=h.id_grupo
  4. GROUP BY e.empresas;

La tabla grupos deberia tener el campo id_empresa no empresa (entiendo que es el nombre)

Si empresa en grupos es en realidad el id_empresa debes cambiar ON e.empresa=g.empresa por ON e.id=g.empresa
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 04/05/2012 a las 02:36
  #3 (permalink)  
Antiguo 04/05/2012, 22:25
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 1
Respuesta: Consulta a varias tablas

hola quimf, gracias por la respuesta.

estuve todo el dia probando, pero no he logrado hacerlo andar, me podrias explicar en detalle la consutla que haces, asi logro interpretar y poder tocar donde sea necesario para que funcione.

te dejo mi consulta completa:


Código PHP:
  <?php

$sql 
mysql_query("SELECT e.empresa,SUM(h.valor_empresa * h.duracion) AS suma
FROM (e.empresas INNER JOIN grupos g ON e.empresa=g.empresa)
INNER JOIN horas h ON g.id=h.id_grupo
GROUP BY e.empresas"
);
    while (
$registro mysql_fetch_array($sql)) { 
        
$grupo $registro['grupo'];
        
$nombre $registro['nombre'];
        
$empresa$registro['empresa'];
        
$duracion$registro['duracion'];
        
$valor_empresa$registro['valor_empresa'];
        
$id_grupo$registro['id_grupo'];

echo 
"<tr>";
echo
"<td $colortd><span class='Estilo9'><span class='Estilo3'>$nombre</span></td>";
echo
"<td $colortd><span class='Estilo9'><span class='Estilo3'>$suma</span></td>";

   
"</tr>";
}

?>
el error que me muestra es el siguiente:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

gracias nuevamente
__________________
Bye!
  #4 (permalink)  
Antiguo 07/05/2012, 03:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta a varias tablas

Cita:
tengo que realizar una consulta para mostrar lo siguiente:

Empresa | SubTotal
Pepito | 460
Pedrito | 208
Total | 668
La consulta retorna empresa y suma no puedes pedir otros campos.

Cita:
$grupo = $registro['grupo'];
$nombre = $registro['nombre'];
$empresa= $registro['empresa'];
$duracion= $registro['duracion'];
$valor_empresa= $registro['valor_empresa'];
$id_grupo= $registro['id_grupo'];


Código MySQL:
Ver original
  1. SELECT e.empresa,
  2. //Nombre de la empresa
  3.             SUM(h.fee_empresa * h.duracion)
  4. //Suma de h.fee_empresa por h.duracion
  5. //Lista de campos
  6. FROM (e.empresas
  7.               INNER JOIN
  8.                       grupos g
  9.                         ON e.empresa=g.empresa)
  10.               INNER JOIN horas h
  11.                         ON g.id=h.id_grupo
  12. //Relaciona las distintas tablas para obtener un registro con los datos requeridos
  13. GROUP BY e.empresas;
  14. //Agrupa por empresa, las sumas se hacen en función del campo


Código PHP:
Ver original
  1. $sql = mysql_query("SELECT e.empresa," .
  2.                                 "SUM(h.valor_empresa * h.duracion) AS suma " .
  3.                                  "FROM (empresas e INNER JOIN grupos g " .
  4.                                              "ON e.empresa=g.empresa) ".
  5.                                           "INNER JOIN horas h ON g.id=h.id_grupo " .
  6.                                   "GROUP BY e.empresas");

FROM (empresas e no FROM (e.empresas (error mio)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 07/05/2012, 22:07
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años
Puntos: 1
Respuesta: Consulta a varias tablas

Espectacular lo suyo Sr., no solo me funciono, sino que además me enseño como poder utilizar esta herramienta en otras oportunidades, transmitiéndome su conocimiento.

Muchas gracias
__________________
Bye!

Etiquetas: tabla, tablas
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:21.