SQL - Duda con procedimiento SQL

 
Vista:

Duda con procedimiento SQL

Publicado por Aurora Nuñez (9 intervenciones) el 25/07/2007 18:57:00
¡Hola! necesito hacer lo siguiente.

Necesito graficar el acumulado de ventas y compras diarias de los productos de una farmacia, las compras se iniciaran a travez de un inventario inicial, el cual se ira incrementando de acuerdo a las compras diarias, y las ventas inician en cero e igual se incrementaran diariamente.

Estoy comparando renglones de cada una de las tablas, pero si un dia no hubo compra de un producto y si hubo venta mi relacion ya no cuadra, no me arroja a la venta o la compra de ese producto, por lo cual necesito llenar mi tablas de ventas y compras con todos los dias del mes.

¿Como puedo hacer esto?, pienso que con un ciclo pero no tengo idea de como hacerlo...

Por ejemplo:

Si un producto lo vendi el dia primero de junio y el 3 de junio pero el dia 2 de junio no lo vendi, insertar en mi tabla el dia 2 de junio con ventas en cero, y hacer lo mismo con la tabla de compras.

Espero haberme explicado bien...

Necesito mucho de su ayuda.

Gracias de antemano.

si tienen dudas please envienme un mensaje aqui o a mi correo

GRACIASSSSS.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda con procedimiento SQL

Publicado por Isaias (5072 intervenciones) el 25/07/2007 19:41:12
Aurora

¿Que base de datos estas manejando?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Aurora Nuñez (2 intervenciones) el 25/07/2007 21:29:18
Mi base de datos esta en SQL
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Isaias (5072 intervenciones) el 26/07/2007 01:23:58
La mayoria de los motores de basos, usan SQL para el manejo interno, mi pregunta es: SQL SERVER DE MICROSOFT?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Aurora Nuñez (9 intervenciones) el 26/07/2007 02:29:39
Asi es, SQL Server de Microsoft
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Isaias (5072 intervenciones) el 26/07/2007 19:21:17
Siendo asi, no veo otra solucion que GENERES tablas temporales con el calendario del mes en cuestion, para poder relacionar tus movimientos reales contra dicha tabla y hacer un JOIN FULL, aquellos que sean NULL, los cambias por CERO con la funcion ISNULL(Ventas, 0)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Aurora Núñez (9 intervenciones) el 26/07/2007 19:30:20
Hola Isaias, asi es, ya tengo mis tablas temporales, pero ahora no se como actualizar estas tablas con los valores, reales, es decir, hice esto.

Hice una tabla temporal en la cual puse todos los dias del mes y todos los codigos, inicialize el valor de la compra a 0. (esto seria mi tabla temporal de compras)

Hice lo mismo con Ventas e Inventario.

Lo que intento hacer ahora es un update, es decir, que cambie el valor de 0 de la compra por el valor real de la compra.

Tengo una query que se llama Compras_Balance de donde obtengo esta informacion, estos datos los quiero actualizar en la tabla temporal de Compras_Diarias cuando el codigo y la fecha sea la misma.

Solo que no lo he podido hacer, no se si haya otra manera de hacer esto.

Esta es mi consulta.

UPDATE compra_diaria
set compra_diaria.compra = (
select compras_balance.compra from compras_balance , compra_diaria where
Compra_Diaria.Fecha = Compras_balance.Fecha and Compra_Diaria.Codigo = Compras_Balance.CodInterno)

pero me muestra este error:

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.

Estoy intentando de otra manera, pero aun no encuentro la solucion.

Espero puedan ayudarme.

Gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Isaias (5072 intervenciones) el 26/07/2007 19:49:38
Debe ser una actualizacion del tipo FROM, te recomiendo que saques un respaldo de tus tablas o bien trabajes con un respaldo.

UPDATE compra_diaria set compra_diaria.compra = compras_balance.compra
FROM compra_diaria JOIN compras_balance
ON Compra_Diaria.Fecha = Compras_balance.Fecha
AND Compra_Diaria.Codigo = Compras_Balance.CodInterno
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Aurora Núñez (9 intervenciones) el 26/07/2007 21:27:42
Isaia, muchas gracias por el ejemplo, pero no se que estoy haciendo mal o que me hace falta porque realizo la operacion, me envía un mensaje con las cantidad de filas afectadas pero cuando abro mi tabla no se realizo ningun cambio y mis valores de compra siguen en cero,

Sabes debido a que es esto.

Muchas gracias.

Ya intenté de otras formas pero ninguna me queda : (
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Isaias (5072 intervenciones) el 26/07/2007 23:43:48
Bueno, desconozco el tipo de datos que estas ocupando, pero hay uno que dice: FECHA, ¿Es tipo DATETIME?, porque en el WHERE se esta comparando de formta IGUAL (=)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Aurora Núñez (9 intervenciones) el 26/07/2007 23:47:16
Ya quedó Isaias, muchisimas gracias por tu ayuda.

He podido avanzar en mi proyecto aunque me falta todavia hacer bastante...

¡¡¡¡MUCHAS GRACIASSSSSS!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Isaias (5072 intervenciones) el 27/07/2007 02:18:26
Que buena noticia, por aqui estaremos si algo mas se ofrece, Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Aurora Núñez (9 intervenciones) el 27/07/2007 18:51:12
Isais, otra pregunta...

Ahora quiero actualizar campos de diferentes tablas, pero no se como decirle que lo haga cuando la fecha de una tabla sea del dia siguiente de la otra, es decir...

el total de mi acumulado de compra de mi query Ciclo lo mande a el campo inventario de compra de mi tabla compra diaria pero con la fecha siguente...

por ejemplo, si mi acumulado de compra del dia primero de junio fue de 15 pasar el valor de 15 al campo inventario de compra de la tabla compra_diaria pero con fecha del dia 2 de junio.

Yo hice esta consulta, pero no me modifica ningun registro...

UPDATE Compra_Diaria set Compra_Diaria.Inv_Compra = ciclo.Acum_Compra
FROM Compra_Diaria JOIN ciclo
ON Compra_Diaria.Fecha = ciclo.Fecha - 1
AND Compra_Diaria.Codigo = ciclo.Codigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Isaias (5072 intervenciones) el 27/07/2007 23:48:51
Bueno, si tienes una FECHA BASE, es tan sencillo como que le SUMES, dias, meses, años, horas, minutos, segundos, etc.

Ejemplo:

-- Le resta a DIAS 15 y calcula la nueva fecha.
SELECT DATEADD(DD, -15, GETDATE())
------------------------------------------------------
2007-07-12 17:17:24.903

(1 row(s) affected)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Isaias (5072 intervenciones) el 27/07/2007 23:50:12
Aurora

Cuando hablamos de fechas, es conveniente comparar solo contra año-mes-dia, quitar horas-minutos-segundos.

SELECT CONVERT(CHAR(8), DATEADD(DD, -15, GETDATE()), 112)
--------
20070712

(1 row(s) affected)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Aurora Núñez (9 intervenciones) el 28/07/2007 00:09:35
¡Hola Isaias! claro que me sirven tus respuestas, añadi el otro por si no veias este, por si las dudas...

Entonces si tengo todos los dias de dos meses, quedaria mas o menos asi...

UPDATE Compra_Diaria set Compra_Diaria.Inv_Compra = ciclo.Acum_Compra
FROM Compra_Diaria JOIN ciclo
ON Compra_Diaria.Fecha = SELECT CONVERT(CHAR(8), DATEADD(DD, -1, GETDATE()), 112) AND Compra_Diaria.Codigo = ciclo.Codigo

o nada que ver??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda con procedimiento SQL

Publicado por Isaias (5072 intervenciones) el 28/07/2007 01:44:24
CONVERT, es una funcion, no necesitas anteponerle el SELECT:

UPDATE Compra_Diaria set Compra_Diaria.Inv_Compra = ciclo.Acum_Compra
FROM Compra_Diaria JOIN ciclo
ON CONVERT(CHAR(8), Compra_Diaria.Fecha, 112) = CONVERT(CHAR(8), DATEADD(DD, -1, GETDATE()), 112) AND Compra_Diaria.Codigo = ciclo.Codigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar