Vous êtes sur la page 1sur 3

regimiento (id, NombreReg, NombreCoronel,Integrantes)

Donde (id) llave primaria regimiento


batallon (id_b, id_reg, nombre,Integrantes)
Donde (id_b) llave primaria batallon
Donde (id_reg) es clave foranea a regimiento
mision (id, id_b, nombremomento, fechasalida, fecharetorno)
Donde (id) llave primaria mision
Donde (id_b) es clave foranea a batallon
ubicacion (id, id_m, nombre, latitud, longitud)
Donde (id) llave primaria ubicacion
Donde (id_m) es clave foranea a mision
alimento (id , grupo, descripcion, alimento,GrHD,calorias,proteinas,grasas,canti
dad ,unidad, presentacion,caducidad)
Donde (id) llave primaria alimento
menu (id_menu, descripcion )
Donde (id_menu) llave primaria menu
componentes (id_menu, id_alimento, cantidad,)
Donde (id_alimento) es clave foranea a alimento
orden (Id_orden,id_mision,fechapedido,id_menu,tipocomida)
Donde (Id_orden) es clave foranea a mision
Donde (id_menu) es clave foranea a menu
-------------------consultas
SELECT od.id_orden,
od.id_mision,
od.fechapedido,
od.id_menu,
od.tipocomida,
me.descripcion,
co.id_alimento,
al.descripcion,
al.grupo,
al.alimento,
al.grhd,
al.calorias,
al.proteinas,
al.grasas
FROM orden od ,mision mi ,menu me , componentes co ,alimento al
where od.id_mision = mi.id
and mi.id_b = 1
and od.fechapedido = to_date('01/05/2007','DD/MM/YYYY')
and od.id_menu = me.id_menu
AND me.id_menu = co.id_menu

and co.id_alimento = al.id;


--ejerccicio 3
--a)
SELECT
mi.id_b,
od.fechapedido,
sum(al.proteinas) Total_proteinas
FROM orden od ,mision mi ,menu me , componentes co ,alimento al
where od.id_mision = mi.id
and mi.id_b = 1
and od.fechapedido = to_date('01/05/2007','DD/MM/YYYY')
and od.id_menu = me.id_menu
AND me.id_menu = co.id_menu
and co.id_alimento = al.id
group by mi.id_b,od.fechapedido;
---b)
SELECT
re.nombrereg Regimiento,
mi.nombremomento,
ba.integrantes Total_Integrantes,
sum(al.calorias) Total_calorias_x_integrantes,
ba.integrantes * sum(al.calorias) Total_Regimiento
FROM orden od ,mision mi ,menu me , componentes co ,alimento al , batallon ba
, regimiento re
where od.id_mision = mi.id
and re.id = 1
and mi.id = 2
and re.id = ba.id_reg
and od.id_menu = me.id_menu
AND me.id_menu = co.id_menu
and co.id_alimento = al.id
and mi.id_b = ba.id_b
group by re.nombrereg,mi.nombremomento,ba.integrantes;
--c)

--d)
select al2.grupo,al2.alimento from alimento al2
where al2.grupo = 'Grupo II'
and al2.alimento not in (SELECT distinct al.alimento
FROM orden od ,mision mi ,menu me , componentes co ,al
imento al
where od.id_mision = mi.id
and mi.id_b = 1
AND me.id_menu = co.id_menu
and co.id_alimento = al.id
and al.grupo = 'Grupo II');

--Ejercicio 4

Manipulacin datos y consultas (10%)

---- secuencia
create sequence secuencia_alim2
start with 834
increment by 1
maxvalue 99999
minvalue 1;

----- trigger
CREATE OR REPLACE FUNCTION AlimentoFuncion()
RETURNS "trigger" AS
$BODY$
BEGIN
New.id:=nextval('secuencia_alim2');
Return NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
CREATE TRIGGER AlimentosTrigger
BEFORE INSERT
ON alimento
FOR EACH ROW
EXECUTE PROCEDURE AlimentoFuncion();

Vous aimerez peut-être aussi