miércoles, 20 de junio de 2018

Fecha Inicial : .19/06/2018 
Fecha Final :  .19/06/2018
Hora Inicio: . 2:25 PM
Hora Final: . 3:35 PM
Horas invertidas(Minutos): 70 minutos 
Colaboradores: José David Rodríguez , Wilson Lopez
Tipo de labor: Compartido



Actividad: Consultas y modificación de tablas Operación y MovimientoAcciones.
Se realizaron cambios en las tabla Operación y MovimientoAcciones. Los cambios que se realizaron fue que había un FK_Movimiento en la tabla Operacion. Ese campo se eliminó y en lugar de ese campo, se puso en MovimientoAcciones un campo FK_Operacion (ver Tabla MovimientoAcciones y Tabla Operacion).
Al realizar estos cambios en las tablas, deben modificarse las consultas 1 y 3. (Ver Consulta 1, Consulta 3)

Imágenes:

Tabla MovimientoAcciones
Tabla Operacion
Consulta 1
Consulta 3



Apéndice:

  • Codigo Tablas modificadas
CREATE TABLE Operacion(
     ID INT PRIMARY KEY identity(1,1),
FK_TipoOperacion INT NOT NULL FOREIGN KEY REFERENCES TipoOperacion(ID),
     FK_Agente INT NOT NULL FOREIGN KEY REFERENCES Agente(ID),
     FK_ClienteCompra INT NOT NULL FOREIGN KEY REFERENCES Cliente(ID),
     FK_ClienteVenta INT NOT NULL FOREIGN KEY REFERENCES Cliente(ID),
Fecha DATE NOT NULL,
     QAcciones INT NOT NULL,
Total int not null,
Comision int not null,
GananciaVendedor int not null default 0,

     Visible CHAR NOT NULL default 'y', CHECK (Visible = 'y' OR Visible = 'n')
)

create table MovimientoAcciones(
ID INT PRIMARY KEY identity(1,1),
FK_ClienteEmisor int not null foreign key references ClienteXEmisor(ID),
    FK_Accion int not null foreign key references Accion(ID),
    FK_Operacion int not null foreign key references Operacion(ID),
Cantidad int not null default 0,
Precio money not null default 0
)

  • Version 1.2 - Consultas - Consulta 1
CREATE PROCEDURE Consulta_1
@emisorDocID int,
@fechaInicio date,
@fechaFin date
AS
BEGIN
IF EXISTS (SELECT * FROM Emisor E, Operacion OP WHERE DocID = @emisorDocID and Op.Fecha>=@fechaInicio and Op.Fecha <= @fechaFin)
BEGIN 
SELECT E.Nombre, A.ID, A.PrecioActual,AVG(MA.Precio),COUNT(MA.ID) 
FROM Accion A INNER JOIN MovimientoAcciones MA 
ON A.ID = MA.FK_Accion INNER JOIN Operacion Op 
ON Op.ID = MA.FK_Operacion and A.ID = MA.FK_Accion and Op.Fecha>=@fechaInicio and Op.Fecha <= @fechaFin  INNER JOIN Emisor E
ON E.DocID = @emisorDocID and A.FK_Emisor = E.ID
GROUP BY E.Nombre, A.ID, A.PrecioActual
ORDER BY A.PrecioActual
END
ELSE
BEGIN
RETURN -50001 --Alguno de los parámetros no está registrado en la base de datos
END
END
GO

  • Versión 3.1 - Consultas - Consulta 3

CREATE PROCEDURE Consulta_3
@fechaInicio date,
@fechaFin date
AS
BEGIN
IF EXISTS (SELECT * FROM Operacion WHERE Fecha>=@fechaInicio and Fecha <= @fechaFin)
BEGIN
SELECT A.NombreEmpresa,A.Codigo,SUM(Op.GananciaVendedor) AS Ganancia
FROM Accion A
INNER JOIN MovimientoAcciones MA ON A.ID = MA.FK_Accion 
INNER JOIN Operacion Op ON OP.ID = MA.FK_Operacion and OP.Fecha>=@fechaInicio and Op.Fecha <= @fechaFin
GROUP BY A.NombreEmpresa,A.Codigo
ORDER BY Ganancia DESC
END
END
GO


Fuente:

 Conocimiento adquirido

No hay comentarios.:

Publicar un comentario