Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Ayuda] Parcial GDD Lacquaniti 1C2018
Autor Mensaje
Khal Drogo Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 43
Agradecimientos dados: 0
Agradecimientos: 4 en 3 posts
Registro en: Dec 2014
Mensaje: #1
Sad [Ayuda] Parcial GDD Lacquaniti 1C2018 Parciales Gestión de Datos
Buenas gente, me podrían dar una mano con los ejercicios que tomó lacquaniti este cuatrimestre? . Sé que no es lo ideal ver resoluciones pero falté mucho y me están faltando ejemplos para tener de referencia. Desde ya agradezco su tiempo

1) Se necesita saber que productos no son vendidos durante el 2018 y cuáles sí. La consulta debe mostrar:
a) código de producto
b) Nombre de producto
c) Fue vendido (si o no) según el caso
d) cantidad de componentes
EL resultado debe ser ordenado por cantidad total vendida
Nota: no se permite el uso de sub-selects en el FROM ni funciones definidas por el usuario
Aclaracion: se realiza con la base de práctica de la cátedra, en lugar de 2018 se puede usar otro año para testearla

2) implementar el/los objetos necesarios para mantener siempre actualizado al instante ante cualquier evento el campo fact_total de la tabla Factura
Nota: se sabe que actualmente el campo fact_total presenta esta propiedad
(Este mensaje fue modificado por última vez en: 18-07-2018 23:57 por Khal Drogo.)
16-07-2018 20:28
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
colito4 Sin conexión
Militante
Sin estado :(
***

Ing. en Sistemas
Facultad Regional General Pacheco

Mensajes: 64
Agradecimientos dados: 1
Agradecimientos: 4 en 4 posts
Registro en: Sep 2010
Mensaje: #2
RE: [Ayuda] Parcial GDD Lacquaniti 1C2018
Hola, yo tuve un 7 en el de SQL ( porque mostraba una columna que el no pedia para poder ordernar adecuadamente, con el tiempo que tenia preferi dejarlo asi ). El de T-SQL no lo aprobe pero porque me olvide de poner las otras PKs, la logica en si no me dijo que estaba mal.
Spoiler: Mostrar
SELECT p.prod_codigo, p.prod_detalle as 'nombre',

ISNULL((SELECT COUNT(c.comp_producto) FROM [GD2015C1].[dbo].Composicion c WHERE c.comp_producto = p.prod_codigo),0) as 'Cantidad componentes',

'Vendido' AS 'Producto', SUM(it.item_cantidad) as cant_vendida

FROM [GD2015C1].[dbo].Producto p
INNER JOIN [GD2015C1].[dbo].Item_Factura it ON it.item_producto = p.prod_codigo
INNER JOIN [GD2015C1].[dbo].Factura f ON f.fact_numero = it.item_numero AND f.fact_sucursal = it.item_sucursal AND f.fact_tipo = it.item_tipo
where YEAR(f.fact_fecha) = 2018
GROUP BY p.prod_codigo, p.prod_detalle
UNION ALL
SELECT p.prod_codigo, p.prod_detalle as 'nombre',

ISNULL((SELECT COUNT(c.comp_producto) FROM [GD2015C1].[dbo].Composicion c WHERE c.comp_producto = p.prod_codigo),0) as 'Cantidad componentes',

'No Vendido' AS 'Producto',0 as cant_vendida

FROM [GD2015C1].[dbo].Producto p
where p.prod_codigo not in (SELECT p.prod_codigo
FROM [GD2015C1].[dbo].Producto p
INNER JOIN [GD2015C1].[dbo].Item_Factura it ON it.item_producto = p.prod_codigo
INNER JOIN [GD2015C1].[dbo].Factura f ON f.fact_numero = it.item_numero AND f.fact_sucursal = it.item_sucursal AND f.fact_tipo = it.item_tipo
where YEAR(f.fact_fecha) = 2018)
GROUP BY p.prod_codigo, p.prod_detalle
order by 5 desc
Spoiler: Mostrar
CREATE TRIGGER tr_totalFactura ON ItemFactura
AFTER INSERT, UPDATE, DELETE
AS
    BEGIN TRANSACTION
DECLARE @fact decimal (12,2)
DECLARE @importe decimal (12,2)

DECLARE mi_cursor cursor for
SELECT (ITEM_CANTIDAD * ITEM_PRECIO),ITEM_NUMERO FROM
INSERTED GROUP BY ITEM_NUMERO
UNION SELECT (-1* (ITEM_CANTIDAD * ITEM_PRECIO)),ITEM_NUMERO FROM
DELETED GROUP BY ITEM_NUMERO
OPEN mi_cursor
FETCH NEXT mi_cursor into @importe,@fact
WHILE @@FETCH_STATUS =0
BEGIN 
UPDATE FACTURA
SET FACT_TOTAL=FACT_TOTAL+@importe
WHERE
FACT_NUMERO=@fact (aca faltaba preguntar por los otros PK que eran tipo y sucursal[/offtopic])
FETCH NEXT mi_cursor into @importe,@fact
END
CLOSE mi_cursor
DEALLOCATE mi_cursor

        COMMIT TRANSACTION


Espero te haya ayudado.
Saludos.
19-07-2018 11:16
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
nicolasAM Sin conexión
Secretario de la SAE
Aguante el Starbucks de la UADE
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 548
Agradecimientos dados: 163
Agradecimientos: 663 en 277 posts
Registro en: Jan 2017
LinkedIn
Mensaje: #3
RE: [Ayuda] Parcial GDD Lacquaniti 1C2018
Buenas

Hoy me hicieron pasar un mal momento con el mismo enunciado del ejercicio de T-SQL así que lo paso por si a alguien le sirve (No está verificado porque hay detalles que no pude hacer para mi entrega final)

/*
Implementar el/los objetos necesarios para mantener siempre actualizado
al instante ante cualquier evento el campo fact_total de la tabla Factura
considerando que el importe es la suma de los precios por las cantidades de los items.

Nota: Se sabe que actualmente el campo fact_total presenta esta propiedad.
*/

IF OBJECT_ID('TR_TOTAL_FACTURA') IS NOT NULL
DROP TRIGGER TR_TOTAL_FACTURA
GO

CREATE TRIGGER TR_TOTAL_FACTURA ON Item_Factura
AFTER INSERT, UPDATE, DELETE
AS BEGIN
-- Hasta donde encontre no se pueden hacer updates sobre varias rows al mismo tiempo
-- Se "podria" pero es medio complicado y CREO que no viene al caso
IF UPDATE(item_cantidad) OR UPDATE(item_precio) BEGIN
DECLARE @CANT_VIEJA DECIMAL(12, 2) =
(SELECT item_cantidad FROM deleted)
DECLARE @CANT_NUEVA DECIMAL(12, 2) =
(SELECT item_cantidad FROM inserted)
DECLARE @PRECIO_VIEJO DECIMAL(12, 2) =
(SELECT item_precio FROM deleted)
DECLARE @PRECIO_NUEVO DECIMAL(12, 2) =
(SELECT item_precio FROM inserted)

UPDATE Factura
SET fact_total = fact_total - @CANT_VIEJA * @PRECIO_VIEJO + @CANT_NUEVA * @PRECIO_NUEVO
WHERE fact_tipo = (SELECT item_tipo FROM deleted)
AND fact_sucursal = (SELECT fact_sucursal FROM deleted)
AND fact_numero = (SELECT fact_numero FROM deleted)
END
ELSE BEGIN
DECLARE @TIPO CHAR(1)
DECLARE @SUCURSAL CHAR(4)
DECLARE @FACTURA CHAR(8)
DECLARE @IMPORTE DECIMAL(12, 2)

DECLARE C_FACTURA CURSOR FOR
SELECT item_tipo, item_sucursal, item_numero,
SUM(item_cantidad * item_precio)
FROM inserted
GROUP BY item_tipo, item_sucursal, item_numero
UNION
SELECT item_tipo, item_sucursal, item_numero,
SUM(item_cantidad * item_precio)*(-1)
FROM deleted
GROUP BY item_tipo, item_sucursal, item_numero

OPEN C_FACTURA
FETCH NEXT FROM C_FACTURA INTO @TIPO, @SUCURSAL, @FACTURA, @IMPORTE
WHILE @@FETCH_STATUS = 0 BEGIN
UPDATE Factura SET fact_total = fact_total + @IMPORTE
WHERE fact_tipo = @TIPO AND
fact_sucursal = @SUCURSAL AND
fact_numero = @FACTURA

FETCH NEXT FROM C_FACTURA INTO @TIPO, @SUCURSAL, @FACTURA, @IMPORTE
END
CLOSE C_FACTURA
DEALLOCATE C_FACTURA
END
END
GO
05-12-2020 21:58
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)