Buenas, lo que estoy queriendo hacer quizas se pueda hacer de otro modo pero por ahora es lo unico que se me ocurre:
Tengo una tabla pedidos, una tabla detallePedidos y una de articulos. En detallePedidos tengo el codigo del articulo y la cantidad a pedir, junto con un codigo de detalle y el codigo de pedido.
Lo que quiero hacer es agregar la cantidad del pedido al stock del articulo, pero mi problema está en que un pedido puede tener varios detallePedido y por ende, varios articulos distintos..
Cómo podría hacer para ir seleccionando de a uno e ir pasando el stock a la tabla articulos?
Ojalá me haya expresado bien y me puedan ayudar.
Desde ya, gracias ! :D
entre Desarrolladores
Recibe ayuda de expertos
Registrate y pregunta
Es gratis y fácil
Recibe respuestas
Respuestas, votos y comentarios
Vota y selecciona respuestas
Recibe puntos, vota y da la solución
Pregunta
Consulta sql
- preguntó
- Software
- 1011 Vistas
- 1 Respuestas
- solucionada
1 Respuesta
Hola @ShamiiCooper,
si tu software permite cambiar el autor, la descripción o lo que sea, tenés que asumir que ese dato va a ser cambiado en algún momento, ya sea porque se encontró un dato mal cargado o por malicia.
Un sistema no está bien hecho si funcionar bien depende de los datos que carguen las personas que lo usan.
De hecho, esto es una de las mayores inconsistencias de datos que permiten a los empleados robar dinero o mercaderías (tema para otro hilo de conversación).
Respecto de las tablas, te quedaría:
- la tabla de Articulos.
- la de Pedidos, pero sin el total. Tendrías una repetición de datos si guardás algo que puede ser calculado (con un simple SUM en este caso).
- detallePedidos, con ID, ID_Pedido, cantidad y todos los datos del Artículo que constan en el pedido real que estás modelando, como por ejemplo: descripción, precio, impuestos, etc.
Luego, pasemos a tu pregunta original: el stock, no se suma ni se agrega en ninguna parte, porque hacerlo viola la Normalización. La forma de calcular los egresos es hacer un SUM() sobre las tablas de detalles de los comprobantes de salida; los ingresos será un SUM() sobre las tablas de detalles de las entradas; el stock es la suma de lo ingresado menos la suma de lo egresado, que se calcula con un UNION sobre las tablas de los detalles, que serán isomórficas respecto de la cantidad y el código del artículo al menos.
Antiguamente, en el siglo pasado, como los RDBMS eran lentos y la potencia de cálculo poca, se violaba la Normalización en estos aspectos para hacer al software más veloz, pero se implementaba en esos términos: violando la 3ra FN para conseguir un resultado, y asumiendo la gran cantidad de código extra que esto implicaba.
Hoy, bien entrados en el siglo XXI, no hay ningún motivo para violar la normalización en estos ámbitos... aunque algún docente muy desactualizado proponga esta estrategia de almacenamiento ;-)
Saludos cordiales!
Por favor, accede o regístrate para añadir un comentario.
Por favor, accede o regístrate para responder a esta pregunta.
En el blog
-
- 690161
- 1
- Jul 5, 2015
Sin Respuesta
-
- 107
- 0
- Oct 18
-
- 173
- 0
- Jul 9
-
- 566
- 1
- Mar 19
-
- 444
- 2
- Feb 26
-
- 4961
- 0
- Nov 7, 2023
-
- 488
- 0
- Sep 19, 2023
-
- 480
- 0
- Ago 21, 2023
-
- 645
- 0
- May 14, 2023
- ver todas
Actividad Reciente
alyvrs preguntó Oct 19
Ayuda , necesito mostrar datos creados solo por el…ManHol preguntó Jul 9
pasar un archivo de excel a csv en pythonArtEze respondió Abr 24
Alguien sabe, no me ignorenArtEze seleccionó una respuesta Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze respondió Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze preguntó Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze respondió Abr 24
No me deja instalar OracleArtEze respondió Abr 24
Formulario que guarde los datos de un jsonArtEze comentó Abr 24
Script /boot/ scrapingSantiago2610 comentó Mar 23
Acualizar ChoiceField en django
Ultimas Preguntas
Usuarios Top
- Leonardo-Tadei
- 227320 Puntos
- Peter
- 150480 Puntos
- white
- 75880 Puntos
- carlossevi
- 63580 Puntos
- magarzon
- 30650 Puntos
- pregunton
- 20400 Puntos