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

Select anidado

Estas en el tema de Select anidado en el foro de Mysql en Foros del Web. B]Select anidado[/B] Hola a todos; Nuevamente necesito la ayuda de don Mr. Foro Mi problema es este: Tengo una BD en MySQL 5.0 y tiene ...
  #1 (permalink)  
Antiguo 26/02/2007, 18:15
 
Fecha de Ingreso: febrero-2007
Mensajes: 62
Antigüedad: 17 años, 2 meses
Puntos: 0
Select anidado

B]Select anidado[/B]
Hola a todos;
Nuevamente necesito la ayuda de don Mr. Foro
Mi problema es este:
Tengo una BD en MySQL 5.0 y tiene una tabla que registra el pedido que hace el usuario. Tiene las columnas "CantidadProducto", "PrecioProducto", "Subtotal" y "Total".
Lo que quiero hacer es que dentro de la BD haga la multiplicacion entre "CantidadProducto" y "PrecioProducto" y que el valor que resulta de la multiplicacion me lo almacene en "Subtotal". Esa es la parte que le corresponderia a cada producto, por ejemplo si pidieron 2 pasteles y el precio es de $25 entonces en "Subtotal" almacenara $50. si pidieron 3 panesillos y el precio es de $10 entonces en "Subtotal" almacenara $30.
Y luego de tener los valor en "Subtotal" que sume esos valores y los guarde en la columna de "Total", eso significa que con el ejemplo anterior el total que almacenaria seria $80.
La idea es hacerlo en un select aninado, pero no se como hacerlo. Por favor agradeceria la ayuda todos aquellos que vean el Mr. foro.
Gracias a todos.
  #2 (permalink)  
Antiguo 26/02/2007, 21:16
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Re: Select anidado

Por lo que leo, veo que estas tratando de implementar un sistema de facturación.

La forma más sencilla, es creando 2 tablas. Tabla Factura, Tabla Detalle.

En la tabla factura, almacenas el número de factura, cliente, dirección, fecha y todo lo que corresponde al encabezado de una factura, el o los últimos campos serían impuesto y total general.

En la tabla detalle, almacenas el ID de la factura, ID del artículo (concatenado como llave) cantidad, precio, costo unitario y total por producto.

Al finalizar de detallar los productos, realizas un SELECT SUM(total producto) y el resultado lo almacenas en la tabla factura.

De esa manera no te complicas tanto.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 26/02/2007, 23:41
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: Select anidado

Hola

Bueno, pues lo mas coherente seria mejorar el modelo entidad relacion de una sola tabla que tienes a varias tablas, pues si en esa sola tabla almacenas un total pues tendrias que esperar hasta que se llenen los datos de la tabla y esto por cada persona.... seria mejor que crearas una tabla de productos unicamente con el nombre del producto y el valor, y en otra tabla que se puede llamar orden o factura, iria la factura, la cantidad de articulos y ahi si se haria la multiplicacion de cada articulo por su valor, y alli se podria calcular subtotal y total! bueno, es solo una idea claro...

pero si lo quieres hacer de una sola tabla, seria algo asi

insert into productos (CantidadProducto,ValorProducto,Subtotal) values (2,200,2*200); y como te digo, tendrias que esperar a la lista de los demas productos para hacer el total, que seria asi

select sum(subtotal) from productos, consulta la cual sumaria todos los subtotales, y la cual tendrias que guardar en una variable para luego hacer un update al campo Total de la misma tabla.... es mejor hacerlo en varias tablas... bueno, espero tengas suerte
  #4 (permalink)  
Antiguo 27/02/2007, 10:34
 
Fecha de Ingreso: febrero-2007
Mensajes: 62
Antigüedad: 17 años, 2 meses
Puntos: 0
De acuerdo Re: Select anidado

Hola:
Gracias BrujoNic y El Patron:
Las dos ideas me parecen bien y creo que de mi parte no me explique bien cuando escribi el problema.
Tengo la BD y en esta tengo 3 tablas, que son: "cart", "productos" y "pedidos"

Dentro de "cart" tengo los siguientes campos: IDProducto, CantidadProducto, RefProducto, ImagenProducto, NameProducto, DescripcionProducto, PrecioProducto, y Subtotal.

Dentro de "productos" tengo los siguientes campos: IDProducto, RefProducto, ImagenProducto, NameProducto, DescripcionProducto y PrecioProducto.

Y dentro de "pedidos" tengo los siguientes campos: IDPedido, IDProducto, CantidadProducto, RefProducto, NameProducto, DescripcionProducto, PrecioProducto, Subtotal y Total.

Ahora dentro de la tabla de "productos" estan los datos almacenados, y lo que quiero hacer es que en la tabla de "cart" (si puede ser posible) multiplique CantidadProducto*PrecioProducto (ejemplo: 2*100) y que el resultado me lo almacene en Subtotal. (ojo que la parte complicada esta en que la tabla asigna filas y cada fila maneja un producto pero el Subtotal es de varios productos y no quiero que se repita en cada linea, si no lo ideal es en una sola, no se si se haga en la misma tabla de "cart" o en la de "pedidos").
Y lo otro que quiero hacer es que en la tabla de "pedidos" sume todos los Subtotal para que me de el Total.

Y despues de esos pasos o procedimientos tengo pensado una cosa que aun no he hecho, es agregar otros campos en la tabla de pedidos, uno que sea "Impuesto" que es del 5% sobre el Total. Y agregar otro campo para Costo de envio. Pero no se si hacer otra tabla para estos o hacerlos en la misma tabla de pedidos.
Agradesco la ayuda.
Suerte a todos.
  #5 (permalink)  
Antiguo 27/02/2007, 10:39
 
Fecha de Ingreso: febrero-2007
Mensajes: 62
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Select anidado

Por favor BrujoNic y El pAtro si me facilitan un email para enviarles un archivo de word donde esta planteada la logica para el Cart, pero que no he podido terminar de hacer.
  #6 (permalink)  
Antiguo 27/02/2007, 10:40
 
Fecha de Ingreso: febrero-2007
Mensajes: 62
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Select anidado

oops, Que pena, es El Patron.
  #7 (permalink)  
Antiguo 27/02/2007, 11:01
 
Fecha de Ingreso: febrero-2007
Mensajes: 62
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Select anidado

Ahora lo estoy haciendo en Dreamweaver y Dios mio los entiendo si dicen que soy mucho hueco al no haberlo podido terminar con el Dreamweaver.
Tengo hecha la pagina de Productos con su campo de texto para que el cliente agregue la cantidad de productos que quiere solicitar. cuando agrega 1 producto lo envia a la pagina de cart y ahi le muestra la cantidad, el nombre del producto, la descripcion del producto y el precio por unidad, pero como le socmente anteriormente no he podido hacer la parte de donde suma la cantidad por el precio del producto y almacene y muestre a la ves un Subtotal y que al final del listado de los productos que la persona agrego haga la sumatoria de los Subtotales para mostrar el Total que lleva comprado la persona.
Gracias nuevamente.
  #8 (permalink)  
Antiguo 27/02/2007, 11:08
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: Select anidado

Hola

Bueno, pues cuando haces la consulta de los datos del producto crea 2 variables y asignale a una el valor del producto y a otra la cantidad, y en una tercera variable guarda el resultado de la operacion, y esa variable la envias a guardar... si no te es muy claro yo te colaboro, tenes algun correo? o alguna cuenta en alguna mensajeria instantanea?? bueno, espero tengas suerte.
  #9 (permalink)  
Antiguo 27/02/2007, 11:10
 
Fecha de Ingreso: febrero-2007
Mensajes: 62
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Select anidado

Gracias Don Patron, claro que si la tengo.
Suerte
  #10 (permalink)  
Antiguo 27/02/2007, 11:14
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Re: Select anidado

Disculpa pero por mi parte prefiero que los problemas se resuelvan en el foro para que sea utilizada de referencia futura a otros.

No comprendo porque cart y productos tienen prácticamente los mismos campos.

La tabla de pedidos (lo comprendo como facturación) la dividiría a como traté de explicarte.

Lo que creo que pretendes hacer, es un inventario y facturación.

Si lo ponemos así, debes tener por lo menos las siguientes tablas: Producto, Cliente, Factura y Detalle. Cliente se relacionan con Factura, donde el campo en común va a ser el ID del cliente para extraer toda su información.

Producto, se relaciona con Detalle, ya que ahí se va a detallar, valga la redundancia, lo que el cliente va a comprar. Teniendo el ID del producto, se extrae toda la información necesaria.

Detalle se relaciona además con Factura para que sepa a quien corresponde.

Cliente tiene, como llave principal y única, el ID del cliente.
Producto tiene, como llave principal y única, el ID del producto.
Factura tiene, como llave principal y única, el número de factura.
Detalle tiene, como llave principal y única, la factura y secuencia (autonumérico) de producto adquirido. De esa forma, se va a saber a qué factura pertenece.

Si incluyes el Detalle de la factura en Pedidos (que supongo es lo que pide el cliente), vas a tener una tabla muy ineficiente.

Lo del impuesto, se lo podes dejar en la tabla de facturas.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
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 12:36.