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

un registro grande para un cliente(persona)

Estas en el tema de un registro grande para un cliente(persona) en el foro de Mysql en Foros del Web. Buenos dias compañeros del foro. En este caso vengo nuevamente a mysql. La duda es la siguiente: tengo un cliente llamado diego y a este ...
  #1 (permalink)  
Antiguo 31/01/2016, 10:07
 
Fecha de Ingreso: mayo-2013
Ubicación: bogota
Mensajes: 157
Antigüedad: 11 años
Puntos: 2
un registro grande para un cliente(persona)

Buenos dias compañeros del foro.
En este caso vengo nuevamente a mysql. La duda es la siguiente:
tengo un cliente llamado diego y a este cliente le quiero hacer un pedido de productos de aseo, entonces:
_____________________________________________
nombre_cl | producto | medida | cant_unit | total |
diego |desengrasante| 125ML | 10 | |
|detergente | 250ML | 35 | |
|suavizante |1000ML | 50 | |
| 250000|
______________________________________________

Lo que nesecito es poner ese pedido a nombre de ese cliente.


Estoy haciendo la interfaz grafica en JAVA y JDBC con MYSQL.
El pedido lo tengo organizado exactamente como se ve en la tabla.
pera a la hora de pasarlo solo me guarda el primer registro de cada columna en MYSQL.

Muchas gracias.
  #2 (permalink)  
Antiguo 31/01/2016, 10:20
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: un registro grande para un cliente(persona)

Bueno, por lo pronto, esto:
Cita:
Estoy haciendo la interfaz grafica en JAVA y JDBC con MYSQL.
es totalmente irrelevante para el problema en MySQL. Que lo hagas en Java, Python, .Net o PHP es igual. La logica de la base de datos es independiente del lenguaje.

Dicho esto, vamos a aclarar también que un pedido, orden de pedido o cualquier esquema semejante, requiere un modelo de tablas que se denomina "maestro-detalle", que asumo que debes conocer. Esto implica que la tabla OrdenPedido se relaciona con DetallePedido por medio de su FK qu e es el numero de pedido. Es OrdenPedido la que se vincula con Cliente por medio del numero o ID del cliente (usar un nombre como clave para los clientes es una pésima idea.
En ese contexto, lo que tu programa debe cumplir es:
1) Dar de alta la cabecera del pedido en OrdenPedido, con los datos de Id del cliente y fecha.
2) Recuperar el numero de pedido si este se genera en forma autoincremental.
3) Recorrer uno a uno los registros virtuales del pedido en la aplicación e insertarlos en la tabla de DetallePedido, usando comodato de entrada el numero de pedido ya obtenido, el numero de producto, la cantidad y el descuento si lo hay.

Esa es la forma usual y general de trabajo en todos estos tipos de casos.

Obviamente este esquema requiere que las tablas de la base estén diseñadas correctamente, y que existan las tablas Cliente y Producto... Que supongo debes tener, ¿no?
__________________
¿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 31/01/2016, 10:46
 
Fecha de Ingreso: mayo-2013
Ubicación: bogota
Mensajes: 157
Antigüedad: 11 años
Puntos: 2
Respuesta: un registro grande para un cliente(persona)

ok. Perdona mi error.
si claro tengo una tabla cliente en donde tengo la info del cliente con su respectivo id_cliente en auto increment y relacionado con otra tabla llamada factura que es donde nace mi pregunta.
factura:id_cliente, id_producto, id_medida, cant_unit, sub_total, fecha_pedido, total.

producto:desengr, deterg, suavizante. con su respectivo id_producto y relacionado con factura

medidas:125,250,300 en MLs(mililitros). con su respectivo id_medida relacionado a factura


a lo que voy es como hago para insertar todos esos productos que estan en la factura con el id_cliente.

para que cuando yo desee buscar por ese numero de factura me muestre el pedido completo.

Muchas gracias.
  #4 (permalink)  
Antiguo 31/01/2016, 10:49
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: un registro grande para un cliente(persona)

No veo que describas que tengas la tabla DETALLE_FACTURA...
¿La tienes o no?
__________________
¿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 31/01/2016, 11:03
 
Fecha de Ingreso: mayo-2013
Ubicación: bogota
Mensajes: 157
Antigüedad: 11 años
Puntos: 2
Respuesta: un registro grande para un cliente(persona)

Si.
cliente:id_cliente(pk), nombre, telefono, direccion. relacionado a factura
factura: id_factura(PK),id_cliente, id_producto, id_medida, total
producto:id_producto(pk), nombre. relacionado a la tabla factura.
medidas:id_medida(pk), medida. relacionado a la tabla factura

Si deseo hacer un pedido que requiera mas de una columna me da un mensaje desde mysql que quiere decir que no puedo insertar este pedido.

pero si lo hago con una sola fila lo deja insertar perfectamente.

Espero me entiendas lo que te quiero decir.
  #6 (permalink)  
Antiguo 31/01/2016, 11:09
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: un registro grande para un cliente(persona)

En realidad la respuesta correcta es NO, NO LA TIENES.
En ese esquema que describes no está la tabla de detálle, y tu modelo no soporta pedidos de varios ítem...

El diseño está incompleto.
__________________
¿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 31/01/2016, 11:14
 
Fecha de Ingreso: mayo-2013
Ubicación: bogota
Mensajes: 157
Antigüedad: 11 años
Puntos: 2
Respuesta: un registro grande para un cliente(persona)

Ok. Podrias ayudarme?, eso es exactamente lo que nesecito: una tabla que me acepte varios items y cuando yo desee buscar por el id_factura de muestre la informacion del pedido completo
a detalle, tal cual se generò la factura.
  #8 (permalink)  
Antiguo 31/01/2016, 11:40
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: un registro grande para un cliente(persona)

No es UNA tabla. Es el esquema lo que está mal.

Necesitas:
Cita:
CLIENTE(cliente_id, nombre_cliente, rut_cuit, direccion_cliente, ....)
PRODUCTO(producto_id, codebar_producto, nombre_producto, precio_unit_producto, stock_producto, ...)
FACTURA(nro_factura, fecha_factura, cliente_id, importe_total, descuentos, impuestos_factura....)
DETALLE_FACTURA(nro_factura, nro_item, producto_id, cantidad)
A tener en cuenta:
1) Diferentes medidas de envases, volúmenes o presentaciones en un producto, son diferentes productos de la misma marca, aunque todos sean del mismo tipo de substancia o elementos físico. Desde el momento en que tienen diferentes presentaciones no son el mismo producto. Usualmente un cambio de packaging, por ejemplo, representa un código de barras diferente.
2) NO se almacenan subtotales, ni totales. No se almacena ningún dato calculable, a excepción de aquellos que representan cobranzas, dado que el valor alli es final. Es decir el único momento en que el monto y subtotales de una factura se emiten es con el comprobante de pago, que representa una parte separada de la emisión de la factura, y es un esquema de tablas especifico. Los datos calculables se generan en las consutlas de los datos, por lo que guardarlos en la tabla es perdida de espacio y riesgo de inconsistencia de datos.
3) No se almacenan datos del cliente en la factura. Es la consulta la que devuelve esos datos tomados de la tabla Cliente.

Partiendo de un esquema como el que te describo muy sucintamente, elcómo se hace en la aplicación ya te lo describí:
Cita:
1) Dar de alta la cabecera del pedido en OrdenPedido, con los datos de Id del cliente y fecha.
2) Recuperar el numero de pedido si este se genera en forma autoincremental.
3) Recorrer uno a uno los registros virtuales del pedido en la aplicación e insertarlos en la tabla de DetallePedido, usando comodato de entrada el numero de pedido ya obtenido, el numero de producto, la cantidad y el descuento si lo hay.
__________________
¿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
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 08:14.