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

[SOLUCIONADO] Seleccionar 2 tablas y sumar todos los campos de 1 tabla

Estas en el tema de Seleccionar 2 tablas y sumar todos los campos de 1 tabla en el foro de Mysql en Foros del Web. Hola, necesito hacer esto: Tabla 'productos' id_producto: 1 | nombre_producto: celular id_producto: 2 | nombre_producto: audifono ----------------------------------------- Tabla 'entradas' id_entrada: 1 | producto: 1 | ...
  #1 (permalink)  
Antiguo 10/10/2013, 19:17
 
Fecha de Ingreso: febrero-2013
Mensajes: 163
Antigüedad: 11 años, 3 meses
Puntos: 1
Seleccionar 2 tablas y sumar todos los campos de 1 tabla

Hola, necesito hacer esto:

Tabla 'productos'

id_producto: 1 | nombre_producto: celular
id_producto: 2 | nombre_producto: audifono

-----------------------------------------

Tabla 'entradas'

id_entrada: 1 | producto: 1 | cantidad: 20
id_entrada: 2 | producto: 1 | cantidad: 30
id_entrada: 3 | producto: 2 | cantidad: 5
id_entrada: 4 | producto: 2 | cantidad: 10

-----------------------------------------

Resultado

id_producto: 1 | nombre_producto: celular | cantidad: 50
id_producto: 2 | nombre_producto: audifono| cantidad: 15

O sea necesito seleccionar los registros de la tabla 'productos', y sumar los campos 'cantidad' de todos los registros en la tabla 'entradas' correspondientes al producto de la primera tabla, y obtener el resultado.

Como estoy trabajando con PHP, estaba haciendo 2 SELECT y manipulando los resultados con PHP, o sea hacía un SELECT de la tabla 'productos' y otro de la tabla 'entradas' sumando todos los campos que necesito, pero creo que no es la manera adecuada y que puedo hacerlo directamente en la consulta.
Estoy buscando en Google pero todavía no encuentro soluciones para este problema, me pueden dar una mano?

Última edición por mathiasmontiel; 10/10/2013 a las 19:31
  #2 (permalink)  
Antiguo 10/10/2013, 20:04
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: Seleccionar 2 tablas y sumar todos los campos de 1 tabla

Cita:
Estoy buscando en Google pero todavía no encuentro soluciones para este problema,
¿Totalmente seguro que no encontraste nada? ¿Ni siquiera una mísera mención de la cláusula JOIN?
¿Nada?
¿Algún manual muy básico de SQL, tampoco?
¿Le diste una mirada a las FAQs, o por ejemplo, al tema "Herramientas y Métodos útiles ", donde podrías encontrar este link: Common MySQL Queries

Mira que es tan simple como:
Código MySQL:
Ver original
  1. SELECT T1.a, T1.b, T1.c SUM(T2.d) d
  2. FROM T1 INNER JOIN T2 ON T1.a = T2.a

Por supuesto, esto es un sencillo esquema como para que veas la idea, y deduzcas lo que debes usar de tus tablas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 10/10/2013 a las 20:16
  #3 (permalink)  
Antiguo 10/10/2013, 20:54
 
Fecha de Ingreso: febrero-2013
Mensajes: 163
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Seleccionar 2 tablas y sumar todos los campos de 1 tabla

No dije que no había encontrado nada, sabía que tenía que utilizar JOIN, lo que no sabía era cómo combinar las 2 tablas y la suma de los registros de una tabla en base a la primera. Tenía casi el mismo código, solo no supe plantearlo bien, así quedó, gracias

Código MySQL:
Ver original
  1. SELECT productos.id_producto, productos.nombre, SUM(entradas.cantidad) cantidad
  2. FROM productos
  3. LEFT JOIN entradas ON productos.id_producto = entradas.producto
  4. GROUP BY productos.id_producto

Última edición por gnzsoloyo; 10/10/2013 a las 21:10

Etiquetas: campo, campos, php, registro, registros, select, 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 07:52.