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

Multiplicar varias filas

Estas en el tema de Multiplicar varias filas en el foro de Mysql en Foros del Web. Hola a todos; En una tabla tengo varias filas con 2 campos. Cantidad y Precio. Quiero calcular el total de esa tabla multiplicando por cada ...
  #1 (permalink)  
Antiguo 07/10/2014, 12:53
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Multiplicar varias filas

Hola a todos;
En una tabla tengo varias filas con 2 campos. Cantidad y Precio.
Quiero calcular el total de esa tabla multiplicando por cada fila la cantidad * el precio y que me de el total en una variable o campo.
Gracias a todos.
  #2 (permalink)  
Antiguo 07/10/2014, 13: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, 4 meses
Puntos: 2658
Respuesta: Multiplicar varias filas

Ajá... y la complicación viene a ser....

En serio, por lo menos dinos con qué DBMS estás trabajando. Dependiendo de eso puede ser l asolución.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/10/2014, 13:17
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Multiplicar varias filas

Con MySql

Esto es lo que hago
Código MySQL:
Ver original
  1. SELECT * FROM carrito

Aquí muestro las filas

Cita:
Editado: Código de programación no permitido en foros de Bases de DAtos. Leer las normas del foro, por favor.
Y lo que quiero es crear una variable que me dé el total.

Última edición por gnzsoloyo; 07/10/2014 a las 13:25
  #4 (permalink)  
Antiguo 07/10/2014, 13:28
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, 4 meses
Puntos: 2658
Respuesta: Multiplicar varias filas

Bueno, lo que quieres es simple, pero necestiamos conocer la estructura de la tabla para darte la solución concreta.
Ejecuta esto y postea el resultado:
Código MySQL:
Ver original
  1. SHOW CREATE TABLE carrito;


En esencia, lo que corresponde es hacer una consulta con uso de SUM() y GROUP BY con el agregado de WITH ROLLUP, pero la sintaxis exacta te la podemos pasar cuando postees lo que te pido.

Nota: Sólo se tratan temas de SQL en los foros de Bases de Datos. Nada de programación, lo que hagas o cómo lo muestres lo puedes ver en el foro correspondiente.
__________________
¿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 07/10/2014, 13:31
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Multiplicar varias filas

Con MySql

Esto es lo que hago
Cita:
Editado: Código de programación no permitido en foros de Bases de DAtos. Leer las normas del foro, por favor.
Aquí muestro las filas
Cita:
Editado: Código de programación no permitido en foros de Bases de DAtos. Leer las normas del foro, por favor.
Y lo que quiero es crear una variable que me dé el total.

Última edición por gnzsoloyo; 07/10/2014 a las 13:38
  #6 (permalink)  
Antiguo 07/10/2014, 13:38
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, 4 meses
Puntos: 2658
Respuesta: Multiplicar varias filas

Usa el phpMyadmin (spongo que es lo único que tienes disponible), y ejecuta la consulta que te pasé. Luego copia y postea aquí el resultado...

No postees código de programación, es OFF TOPIC en este foro.,
__________________
¿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 07/10/2014, 14:43
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Multiplicar varias filas

Es que es mas de una tabla implicadas, te la puedo pasar por otro sistema para que veas la consulta que hago?
  #8 (permalink)  
Antiguo 07/10/2014, 14:50
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, 4 meses
Puntos: 2658
Respuesta: Multiplicar varias filas

No, postea entonces la query completa (SIN PHP) que usas para obtener los datos a sumar, asumiendo que tienes una consulta donde listes el total de producttos con su precio y cantidad.
La query para hacer loque pretendes es muy básica, pero quier estar seguro de lo que estas intentando calcular.

Nota: Cuando describes un problema trata de poner el caso real, no un caso imaginario o simplieficado, porque en este rubro (BBDD) trabajamos con cosas concretas y la solucion para un caso puede no ser aplicable para otro, por la sola diferencia de una columna en el SELECT o un parametro de un WHERE.
Y no bromeo...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 07/10/2014, 14:53
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Multiplicar varias filas

Código MySQL:
Ver original
  1. SELECT * FROM carrito, articulos, galeria
  2. WHERE cliente_ca = '".$_GET['ref']."' AND elidarticulo = id_articulos AND codigo_ar = codearticulo

luego hago un "mysql_fetch_assoc" y muestro la cantidad por el total por lineas.

Última edición por gnzsoloyo; 07/10/2014 a las 16:08
  #10 (permalink)  
Antiguo 07/10/2014, 16:19
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, 4 meses
Puntos: 2658
Respuesta: Multiplicar varias filas

Bueno, por lo pronto, la consulta con "*" no te sirve para lograr la sumatoria del producto que quieres. Tienes que obligatoriamente indicar exactamente que campos vas a usar.
Por otro lado una consulta del tipo
Código MySQL:
Ver original
  1. SELECT * FROM ...
Es el peor tipo de consultas que se pueden usar a nivel performance, apenas por detrás del producto cartesiano y de los agrupamientos con tablas sin indexar. Se recomienda siempre enfáticamente que no se usen esas consultas a menos que vayas a usar todos y cada uno de los campos devueltos, incluyendo los las columnas que se repiten entre dos tablas... (cosa que nunca se usa).

Voy a tener que hacer una suposición respecto a tus tablas: Voy a imaginar que existen columnas llamadas Cantidad y Precio, y además que quieres que el resultado salga en una columna creada en el SELECT, al pie de la cual deberá aparecer el total.
También voy a suponer, ya que no quieres ejecutar la query que te pasé antes, que la columna "Precio" pertenece a Articulos, la "Cantidad" a Carrito, y "codearticulo" a Galería.
Usando en ese contexto lo que ya te mencioné (cuyo uso puedes leer el un Manual de Referencia), quedaría mas o menos así:
Código MySQL:
Ver original
  1. SELECT C.id_articulos, C.Cantidad, A.Precio, SUM(Cantidad * precio) ImporteTotal
  2. FROM carrito C INNER JOIN articulos A ON C.elidarticulo = A.id_articulos
  3. INNER JOIN galeria G ON A.codigo_ar = G.codearticulo
  4. WHERE cliente_ca = '".$_GET['ref']."'
  5. GROUP BY C.id_articulos WITH ROLLUP

Además de eso estoy eliminando los JOIN implicitos, que son un dolor de cabeza, y poniendo alias a las 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)

Etiquetas: bases-de-datos-general, filas, multiplicar, tabla
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 23:54.