Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Aporte][GDD] Parcial Lacquaniti 2C2017
Autor Mensaje
Omnipresent Sin conexión
Campeon del cubo Rubik
The Winter is Coming...
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 195
Agradecimientos dados: 48
Agradecimientos: 59 en 48 posts
Registro en: Sep 2014
Mensaje: #1
[Aporte][GDD] Parcial Lacquaniti 2C2017 Parciales Gestión de Datos
Hi people,
Parcial único tomado por Lacquaniti en el 2C - 2017.

La teoría la dictó en el momento:
Spoiler: Mostrar
Sin considerar los bytes adicionales debido a los atributos que muestran. Determine por qué la siguiente afirmación es verdadera:
SELECT * FROM t WHERE id = 1 es menos perfomante que
SELECT id FROM t WHERE id = 1
sabiendo que existe un indice arbol B en t sobre el atributo id.

Respuestas (resoluciones de varias personas exitosas (? ):

TEORÍA - Nota: 10
Spoiler: Mostrar
En un Arbol B, las hojas contienen punteros a los datos. Al hacer SELECT *, tengo que seguir esos punteros, para ir a buscar todos los registros correspondientes a ese ID. En cambio, si hago SELECT ID no tengo que seguir ese puntero, ya que toda la información que necesito está en el arbol.

SQL - Nota: 10
Spoiler: Mostrar

select
p.prod_detalle,
r.rubr_detalle,
(select count(*) from item_factura where item_producto = p.prod_codigo) cantidad_ventas
from producto p
join rubro r on p.prod_rubro = r.rubr_id
where
p.prod_codigo in
(select c.comp_producto from composicion c group by c.comp_producto having count(comp_componente) > 2) -- cambiar por >= para que me muestre algo
order by (select sum(comp_cantidad) from composicion where comp_producto = p.prod_codigo) desc -- cantidad de componentes, en su cantidad correspondiente
go



T-SQL - Nota: 9
Spoiler: Mostrar


CREATE TRIGGER tr_empleados ON Empleado
AFTER INSERT, UPDATE, DELETE
AS
BEGIN TRANSACTION
IF((SELECT COUNT(*) FROM inserted i) > 0) --Significa que es un INSERT / UPDATE
BEGIN
IF(EXISTS(SELECT 1 FROM inserted WHERE dbo.cant_personas_a_cargo(empl_jefe) < 1))
BEGIN
RAISERROR('Un jefe no puede tener menos de una persona a cargo.', 16, 1)
ROLLBACK
RETURN
END
IF(EXISTS(SELECT 1 FROM inserted WHERE dbo.cant_personas_a_cargo(empl_jefe) > 20))
BEGIN
RAISERROR('Un jefe no puede tener más de 20 personas a cargo.', 16, 1)
ROLLBACK
RETURN
END
END
ELSE --Es un DELETE
BEGIN
IF(EXISTS(SELECT 1 FROM deleted WHERE dbo.cant_personas_a_cargo(empl_jefe) < 1))
BEGIN
RAISERROR('Un jefe no puede tener menos de una persona a cargo.', 16, 1)
ROLLBACK
RETURN
END
END
COMMIT TRANSACTION
GO



   
(Este mensaje fue modificado por última vez en: 16-12-2017 15:45 por Omnipresent.)
16-12-2017 15:45
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Omnipresent recibio 2 Gracias por este post
CarooLina (11-02-2018), emilio_murray (15-04-2018)
Buscar en el tema
Enviar respuesta 




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



    This forum uses Lukasz Tkacz MyBB addons.