--****************************
--TRIGGERS********************
--****************************
--1.- COMPROBAR LOS DATOS, VERIFICANDO QUE LA MESA EXISTA AL INSERTAR UNA NUEVA
--COMANDA
CREATE TRIGGER T1
ON PEDIDOS
INSTEAD OF INSERT
AS
BEGIN
PRINT @@ROWCOUNT
IF (EXISTS(SELECT * FROM INSERTED I, MESAS M
WHERE M.ID_MESA=I.ID_MESA))
BEGIN
PRINT 'Adicionando'
INSERT INTO PEDIDOS (ID_COMANDA,OBJ_VERSION,ESTADO_BD,
NRO_PEDIDO,ESTADO,ID_MESA,ID_MESERO)
SELECT ID_COMANDA,OBJ_VERSION,ESTADO_BD,
NRO_PEDIDO,ESTADO,ID_MESA,ID_MESERO FROM INSERTED
END
ELSE
BEGIN
PRINT 'NO EXITE MESA'
ROLLBACK TRAN
END
END
--2.-COMPROBAR LOS DATOS, VERIFICANDO QUE EL CLIENTE ESTE REGISTRADO
--ANTES DE INSERTARLO EN EL CONTRATO
CREATE TRIGGER T2
ON CONTRATOS
INSTEAD OF INSERT
AS
BEGIN
PRINT @@ROWCOUNT
IF(EXISTS (SELECT * FROM CLIENTES C, INSERTED I
WHERE C.ID_CLIENTE = I.ID_CLIENTE))
BEGIN
PRINT 'ADICIONANDO'
INSERT INTO CONTRATOS ( ID_CONTRATO,OBJ_VERSION,ESTADO_BD,
NRO_CONTRATO, FECHA_PAGO, NRO_PERSONAS, FECHA_EVENTO,
HORA_EVENTO,LUGAR,TIPO_SERVICIO, MONTO_TOTAL,ID_CLIENTE,
ID_TARIFA, ID_ORDEN) SELECT ID_CONTRATO,OBJ_VERSION,ESTADO_BD,
NRO_CONTRATO, FECHA_PAGO, NRO_PERSONAS, FECHA_EVENTO,
HORA_EVENTO,LUGAR,TIPO_SERVICIO, MONTO_TOTAL,ID_CLIENTE,
ID_TARIFA, ID_ORDEN FROM INSERTED
END
ELSE
BEGIN
PRINT 'NO EXISTE CLIENTE!!'
PRINT 'REGISTRE AL NUEVO CLIENTE ANTES DE PROCEDER'
ROLLBACK TRAN
END
END
lunes, 26 de septiembre de 2011
[INF-272] PROYECTO : Triggers
[INF-272] PROYECTO : Indices y Sinonimos
--**************************** --INDICES*Y*SINONIMOS********* --**************************** --1.- CREAR UN INDICE PARA LOS CLIENTES SEGUN SU NIT CREATE INDEX IN_CLIENTE ON CLIENTES (NIT) --2.- CREAR UN INDICE PARA LAS MESAS SEGUN LA SALA Y EL ESTADO CREATE INDEX IN_MESAS ON MESAS (ESTADO,ID_SALA) --3.- CREAR UN SINONIMO PARA LOS PRODUCTOS CREATE SYNONYM ALIMENTO FOR PRODUCTOS SELECT * FROM ALIMENTO --4.- CREAR UN SINONIMO PARA VENTAS CREATE SYNONYM FACTURA FOR VENTAS SELECT * FROM FACTURA
[INF-272] PROYECTO : Reglas y checks
--****************************
--REGLAS Y CHECKS*************
--****************************
--1.- CREAR UN CHECK PARA LIMITAR CONTROLAR LOS ESTADOS QUE
--PUEDE TENER UNA MESA
--SOL CON CHECKS
CREATE TABLE MESAS(
id_mesa int not null,
obj_version int,
estado_bd bit,
nro_mesa int,
ubiacion_x int,
ubiacion_y int,
estado varchar(255),
id_sala int,
CHECK (ESTADO='NO DISPONIBLE' OR ESTADO='DISPONIBLE')
)
--SOL CON REGLAS
CREATE RULE REGLA1
AS
@ESTADO = 'NO DIPONIBLE' OR @ESTADO ='DISPONIBLE'
SP_BINDRULE REGLA1,'MESAS.ESTADO'
--2.- CREAR UNA REGLAS PARA CONTROLAR QUE LA FECHA DE PAGO
-- DE LOS CONTRATOS SEA ANTERIOR A LA FECHA ACTUAL
--SOL CON CHECKS
CREATE TABLE CONTRATOS2(
id_contrato int not null,
obj_version int,
estado_bd bit,
nro_contrato int,
fecha_pago datetime,
nro_personas int,
fecha_evento datetime,
hora_evento datetime,
lugar varchar (255),
tipo_servicio varchar (255),
monto_total numeric (19,2),
id_cliente int,
id_tarifa int,
id_orden int,
CHECK (FECHA_PAGO > GETDATE())
)
--SOL CON REGLAS
CREATE RULE REGLA2
AS
@FECHA_PAGO > GETDATE()
SP_BINDRULE REGLA2,'CONTRATOS.FECHA_PAGO'
[INF-272] PROYECTO : Cursores
--****************************
--CURSORES********************
--****************************
--1.- MEDIANTE CURSORES DETERMINAR LA COMANDA QUE TIENE MAS PRODUCTOS
ALTER PROCEDURE SPC1
AS
BEGIN
DECLARE @CONT_MAX INTEGER
DECLARE @RES INTEGER
DECLARE @IDC INTEGER
DECLARE @CONT INTEGER
SET @CONT_MAX=-1
DECLARE CUR1 CURSOR
FOR
SELECT ID_COMANDA, COUNT(ID_COMANDA) AS CANTIDAD
FROM LINEA_PEDIDO
GROUP BY ID_COMANDA
OPEN CUR1
FETCH CUR1 INTO @IDC,@CONT
WHILE(@@FETCH_STATUS =0)
BEGIN
IF (@CONT>@CONT_MAX)
BEGIN
SET @CONT_MAX=@CONT
SET @RES= @IDC
END
FETCH CUR1 INTO @IDC, @CONT
END
IF @RES!= NULL BEGIN
PRINT 'LA COMANDA COM MAS PRODUCTOS ES : '
PRINT CAST (@RES AS VARCHAR)
END
ELSE
BEGIN
PRINT 'NO EXISTEN COMANDAS'
END
CLOSE CUR1
DEALLOCATE CUR1
END
EXEC SPC1
--2.- MEDIANTE CURSORES DETERMINAR EN CUANTOS CONTRATOS PARTICIPO EL CLIENTE
--DE NOMBRE X
ALTER PROCEDURE SPC2 @XNOMBRE AS VARCHAR(255)
AS
BEGIN
DECLARE @IDCLIENTE INTEGER
DECLARE @ID_AUX INTEGER
DECLARE @CONT INTEGER
SET @CONT=0
SET @IDCLIENTE =DBO.OBT_ID(@XNOMBRE)
DECLARE CUR2 CURSOR
FOR
SELECT ID_CLIENTE FROM CONTRATOS
OPEN CUR2
FETCH CUR2 INTO @ID_AUX
WHILE (@@FETCH_STATUS =0)
BEGIN
IF (@ID_AUX=@IDCLIENTE)
SET @CONT=@CONT+1
FETCH CUR2 INTO @ID_AUX
END
PRINT 'CONTRATOS REALIZADOS: '+CAST (@CONT AS VARCHAR)
CLOSE CUR2
DEALLOCATE CUR2
END
EXEC SPC2 'JUAN pEREZ'
CREATE FUNCTION OBT_ID (@NOMBRE VARCHAR(255))
RETURNS INTEGER
BEGIN
DECLARE @ID INTEGER
SET @ID= (SELECT ID_CLIENTE FROM CLIENTES
WHERE NOMBRE = @NOMBRE)
RETURN @ID
END
[INF-272] PROYECTO : Transacciones
--****************************
--TRANSACCIONES***************
--****************************
--1.- MEDIANTE TRANSACCCIONES CAMBIAR EL NOMBRE Y PRECIO DE COMPRA
--DEL PRODUCTO DE NOMBRE X
ALTER PROCEDURE SP1 @NOMBRE VARCHAR(255),
@NUEVO_NOMBRE VARCHAR(255), @PRECIO_COMPRA NUMERIC(19,2)
AS
BEGIN
BEGIN TRAN
BEGIN TRY
UPDATE PRODUCTOS SET NOMBRE=@NUEVO_NOMBRE,
PRECIO_COMPRA=@PRECIO_COMPRA
WHERE NOMBRE=@NOMBRE
COMMIT TRAN
PRINT 'SE REALIZO CON EXITO LA TRANSACCION'
END TRY
BEGIN CATCH
PRINT 'HA OCURRIDO UN ERROR!!'
ROLLBACK TRAN
END CATCH
END
EXEC SP1 'GASEOSA', 'REFRESCO', 12.5
--2.- MEDIANTE TRANSACCIONES ACTULIZAR EL ESTADO DE LA MESA X AS UN ESTADO Y
ALTER PROCEDURE SP2 (@XMESA INTEGER, @YESTADO VARCHAR (255))
AS
BEGIN
DECLARE @ERROR INTEGER
BEGIN TRAN
UPDATE MESAS SET ESTADO=@YESTADO
WHERE ID_MESA=@XMESA
SET @ERROR=@@ERROR
IF (@ERROR=0)
BEGIN
COMMIT TRAN
PRINT 'EXITO EN LA TRANSACCION'
END
ELSE
BEGIN
ROLLBACK TRAN
PRINT 'HA OCURRIDO UN ERROR!!!'
END
END
EXEC SP2 1,'DISPONIBLE'
SELECT * FROM MESAS
[INF-272] PROYECTO : Vistas
--****************************
--VISTAS**********************
--****************************
--1.- GENERAR UNA VISTA PARA MOSTRAR LAS VAJILLA Y LOS MANTELES
--ENVIADOS EN LA ORDEN 1
ALTER VIEW VISTA1
AS
SELECT V.NOMBRE,V.TIPO, 'VAJILLA' AS TIPO_S
FROM ORDENES_DESPACHO OD, LINEA_DESPACHO_VAJILLA LDV,
VAJILLA V
WHERE OD.ID_ORDEN=LDV.ID_ORDEN AND OD.ID_ORDEN=1
AND LDV.ID_VAJILLA= V.ID_VAJILLA
UNION
SELECT M.NOMBRE,M.TIPO, 'MATEL' AS TIPO_S
FROM ORDENES_DESPACHO OD, LINEA_DESPACHO_MANTELES LDM,
MANTELES M
WHERE OD.ID_ORDEN=LDM.ID_ORDEN AND OD.ID_ORDEN=1
AND LDM.ID_MANTEL=M.ID_MANTEL
SELECT * FROM VISTA1
--2.- GENERAR UNA VISTA PARA MOSTRAR A LA CANTIDAD DE CLIENTES SEGUN SU RAZON SOCIAL
CREATE VIEW VISTA2
AS
SELECT C.RAZON_SOCIAL, COUNT(C.ID_CLIENTE) AS CANTIDAD
FROM CLIENTES C
GROUP BY C.RAZON_SOCIAL
SELECT * FROM VISTA2
[INF-272] PROYECTO : Funciones
--****************************
--FUNCIONES*******************
--****************************
--1.- MOSTRAR EL NOMBRE Y EDAD EXACTA DE LOS MESEROS QUE ATENDIERON A MAS PERSONAS EN LA SALA X
ALTER FUNCTION FUNC1(@XSALA INTEGER)
RETURNS VARCHAR(255)
AS
BEGIN
DECLARE @MESERO VARCHAR (255),@ID_M INTEGER
IF EXISTS(SELECT * FROM SALAS WHERE ID_SALA=@XSALA) BEGIN
SET @ID_M = (SELECT TOP 1 P.ID_MESERO
FROM PEDIDOS P, MESAS M, SALAS S
WHERE P.ID_MESA=M.ID_MESA AND M.ID_SALA=S.ID_SALA
AND S.ID_SALA=@XSALA
GROUP BY P.ID_MESERO
ORDER BY COUNT(P.ID_COMANDA) DESC)
SET @MESERO =(SELECT NOMBRE FROM MESEROS
WHERE ID_MESERO=@ID_M)
END
ELSE
BEGIN
SET @MESERO='NO EXISTE SALA!'
END
RETURN @MESERO
END
PRINT CAST(DBO.FUNC1(2) AS VARCHAR)
--2.- DETERMINAR EL TIEMPO EXACTO DEL CONTRATO MAS ANTIGUO
ALTER FUNCTION FUNC2 ()
RETURNS VARCHAR(25)
AS
BEGIN
DECLARE @RESP VARCHAR(25), @FECH DATETIME
SET @FECH= (SELECT MIN(FECHA_PAGO) FROM CONTRATOS)
SET @RESP = DBO.CAL_EDADD(@FECH)
RETURN @RESP
END
PRINT DBO.FUNC2()
CREATE FUNCTION CAL_EDADD(@FECHA_NAC DATETIME)
RETURNS VARCHAR(25)
AS
BEGIN
DECLARE @AUX_FECHA DATETIME
DECLARE @DIA INTEGER, @MES INTEGER, @ANIO INTEGER
DECLARE @EDAD VARCHAR(25)
SET @AUX_FECHA = @FECHA_NAC
SET @ANIO = DATEDIFF(yy, @AUX_FECHA, GETDATE()) - CASE WHEN MONTH(@FECHA_NAC) > MONTH(GETDATE()) THEN 1 ELSE 0 END
SET @AUX_FECHA = DATEADD(yy, @ANIO, @AUX_FECHA)
SET @MES = DATEDIFF(m, @AUX_FECHA, GETDATE()) - CASE WHEN DAY(@FECHA_NAC) > DAY(GETDATE()) THEN 1 ELSE 0 END
SET @AUX_FECHA = DATEADD(m, @MES, @AUX_FECHA)
SET @DIA = DATEDIFF(d, @AUX_FECHA, GETDATE())
SET @EDAD='AÑOS:'+ CAST(@ANIO AS VARCHAR)+' MESES:'+ CAST(@MES AS VARCHAR)+ ' DIAS:'+ CAST(@DIA AS VARCHAR)
RETURN (@EDAD)
END
[INF-272] PROYECTO : Procedimientos Almacenados
--****************************
--PROCEDIMIENTOS**************
--****************************
--1.- DESCONTAR UN PORCENTAJE D DEL CLIENTE C QUE PARTICIPO EN MAS VENTAS
ALTER PROCEDURE PROC1 @C VARCHAR(255), @D INTEGER
AS
BEGIN
IF (EXISTS(SELECT * FROM CLIENTES WHERE NOMBRE= @C ) )
BEGIN
UPDATE VENTAS SET IMPORTE=IMPORTE - IMPORTE*(@D/100)
WHERE ID_VENTA IN (SELECT V1.ID_VENTA
FROM VENTAS V1, CLIENTES C
WHERE V1.ID_CLIENTE=C.ID_CLIENTE
AND V1.IMPORTE IN (SELECT MAX(V.IMPORTE)
FROM VENTAS V, CLIENTES C
WHERE V.ID_CLIENTE =C.ID_CLIENTE
AND @C=C.NOMBRE))
PRINT 'DATOS ACTULIZADOS'
END
ELSE
BEGIN
PRINT 'NO EXISTE CLIENTE'
END
END
EXEC PROC1 'JUAN FLORES',5
--2.- ELIMINAR LOS CONTRATO REALIZADOS POR EL CLIENTE DE NOMBRE N
--CONJUNTAMENTE CON LA COTIZACION REALIZADA Y LA FACTURA
CREATE PROCEDURE PROC2 (@N VARCHAR(255))
AS
BEGIN
DECLARE @ID_C INTEGER
SET @ID_C=(SELECT ID_CLIENTE FROM CLIENTES WHERE @N=NOMBRE)
IF (@ID_C!=NULL)
BEGIN
DELETE VENTA WHERE @ID_C=ID_CLIENTE
DELETE LINEA_COTIZACION WHERE ID_CONTRATO IN
(SELECT ID_CONTRATO FROM CONTRATO
WHERE ID_CLIENTE=@ID_C)
DELETE CONTRATO WHERE ID_CONTRATO=@ID_C
END
ELSE
BEGIN
PRINT 'NO EXISTE CLIENTE EN LOS REGISTROS'
END
END
EXEC PROC2 'JUAN PEREZ'
lunes, 12 de septiembre de 2011
[INF-272] PROYECTO : Funciones FECHA - CADENAS - MATEMÁTICAS
--******************************************
--FUNCIONES DE FECHA Y HORA*****************
--******************************************
--1.- DETERMINAR EL NUMERO DE DIA (1-365) EN EL QUE ESTAMOS HOY
CREATE FUNCTION NRO_DIA()
RETURNS INTEGER
AS BEGIN
DECLARE @DIAS INTEGER
SET @DIAS=DATEDIFF(d,'1/1/2011',GETDATE())
RETURN(@DIAS)
END
PRINT 'nRO DE DIA: '+ CAST (DBO.NRO_DIA() AS VARCHAR)
--2.- CONTAR LA CANTIDAD DE DIAS QUE SEPARA UNA FECHA X DE OTRA FECHA Y
CREATE FUNCTION NRO_DIAS_FECHAS(@X DATETIME, @Y DATETIME)
RETURNS INTEGER
AS BEGIN
DECLARE @DIAS INTEGER
SET @DIAS=DATEDIFF(d,@X,@Y)
RETURN(@DIAS)
END
PRINT 'nRO DE DIAS: ' + CAST (DBO.NRO_DIAS_FECHAS('07-26/1997',getdate()) AS VARCHAR)
--3.- AGREGAR 'X' DIAS 'Y' MESES Y 'Z' AÑOS A LA FWECHA ACTUAL
CREATE FUNCTION ADICIONA_FECHA(@XD INTEGER, @YM INTEGER, @ZA INTEGER)
RETURNS DATETIME
AS
BEGIN
DECLARE @FECHA_ACTUAL DATETIME
SET @FECHA_ACTUAL=GETDATE()
SET @FECHA_ACTUAL=DATEADD(YEAR,@ZA,@FECHA_ACTUAL)
SET @FECHA_ACTUAL=DATEADD(MONTH,@YM,@FECHA_ACTUAL)
SET @FECHA_ACTUAL=DATEADD(DAY,@XD,@FECHA_ACTUAL)
RETURN @FECHA_ACTUAL
END
PRINT DBO.ADICIONA_FECHA(1,2,3)
--4.- MOSTRAR UN MANSAJE SI NOS ENCONTAMOS EN UN DIA PAR O IMPAR
CREATE FUNCTION VERIFICA_FECHA()
RETURNS VARCHAR(25)
AS
BEGIN
DECLARE @DIA INTEGER
DECLARE @RES VARCHAR(25)
SET @DIA=DAY(GETDATE())
IF (@DIA %2=0)
SET @RES='Dia PAR'
ELSE
SET @RES='Dia IMPAR'
RETURN @RES
END
PRINT DBO.VERIFICA_FECHA()
--5.- CALCULAR LA EDAD INTRUDCIENDO LA FECHA DE NACIMIENTO
CREATE FUNCTION CAL_EDADD(@FECHA_NAC DATETIME)
RETURNS VARCHAR(25)
AS
BEGIN
DECLARE @AUX_FECHA DATETIME
DECLARE @DIA INTEGER, @MES INTEGER, @ANIO INTEGER
DECLARE @EDAD VARCHAR(25)
SET @AUX_FECHA = @FECHA_NAC
SET @ANIO = DATEDIFF(yy, @AUX_FECHA, GETDATE()) - CASE WHEN MONTH(@FECHA_NAC) > MONTH(GETDATE()) THEN 1 ELSE 0 END
SET @AUX_FECHA = DATEADD(yy, @ANIO, @AUX_FECHA)
SET @MES = DATEDIFF(m, @AUX_FECHA, GETDATE()) - CASE WHEN DAY(@FECHA_NAC) > DAY(GETDATE()) THEN 1 ELSE 0 END
SET @AUX_FECHA = DATEADD(m, @MES, @AUX_FECHA)
SET @DIA = DATEDIFF(d, @AUX_FECHA, GETDATE())
SET @EDAD='AÑOS:'+ CAST(@ANIO AS VARCHAR)+' MESES:'+ CAST(@MES AS VARCHAR)+ ' DIAS:'+ CAST(@DIA AS VARCHAR)
RETURN (@EDAD)
END
PRINT DBO.CAL_EDADD('6/07/1997')
--******************************************
--FUNCIONES MATEMATICAS*********************
--******************************************
--1.- GENERAR FIBONACCI
CREATE PROCEDURE FIBO(@N INTEGER)
AS
BEGIN
DECLARE @F INTEGER, @A INTEGER, @B INTEGER, @C INTEGER
SET @A=-1
SET @B=1
SET @C=1
WHILE (@C<=@N)
BEGIN
SET @F=@A+@B
PRINT @F
SET @A=@B
SET @B=@F
SET @C=@C+1
END
END
EXEC FIBO 15
--2.- DETERMINAR LA SUPERFICIE Y EL VOLUMEN DE UN CUBO
ALTER PROCEDURE CUBO (@A NUMERIC(10,2))
AS
BEGIN
DECLARE @SUPERFICIE NUMERIC(10,2),@VOLUMEN NUMERIC(10,2)
SET @SUPERFICIE= 6* POWER(@A,2)
SET @VOLUMEN= POWER(@A,3)
PRINT 'Superficie: '+ CAST (@SUPERFICIE AS VARCHAR(20))
PRINT 'Volumen: ' + CAST (@VOLUMEN AS VARCHAR (20))
END
EXEC CUBO 4.00
--3.- INVERTIR UN NUMERO
ALTER FUNCTION INVERTIR(@n INTEGER)
RETURNS INTEGER
BEGIN
DECLARE @d integer
DECLARE @co integer
DECLARE @nu integer
SET @co=@n
set @nu=0
WHILE(@co<>0)
BEGIN
SET @d=@co%10
SET @nu=@nu*10+@d
SET @co=@co/10
END
RETURN @nu
END
print dbo.invertir(12345)
--4.- CONTAR EL NUMERO DE DIGITOS DE UN NUMERO
ALTER FUNCTION NRODIGITOS(@N INTEGER)
RETURNS INTEGER
AS
BEGIN
DECLARE @NDIG INTEGER
SET @NDIG= LOG(@N)/LOG(10) +1
RETURN @NDIG
END
PRINT DBO.NRODIGITOS(426114)
--5.- VERIFICAR SI UN NUMERO ES PRIMO
CREATE FUNCTION VERIPRIMO(@n integer)
RETURNS INTEGER
BEGIN
DECLARE @i integer
DECLARE @sw integer
DECLARE @c integer
SET @i=2
SET @sw=0
SET @c=0
WHILE(@i<=@n)
BEGIN
IF(@n%@i=0)
BEGIN
SET @c=@c+1
END
SET @i=@i+1
END
RETURN @c
END
if(dbo.VERIPRIMO(43)=1)
begin
print('Si es Primo')
end
else
begin
print('No es primo')
end
--******************************************
--FUNCIONES DE CADENA **********************
--******************************************
--1.- CONVERTIR EL PRIMER CARACTER MAYUSCULA Y EL RESTO A MINUSCULA
ALTER FUNCTION TIPOTITULO (@A VARCHAR (255))
RETURNS VARCHAR(255)
AS
BEGIN
DECLARE @PAL VARCHAR(255)
SET @PAL =UPPER(LEFT(@A,1))+ LOWER(SUBSTRING(@A,2,LEN(@A)))
RETURN @PAL
END
PRINT DBO.TIPOTITULO('HOLA mUNdo')
--2.- MOSTRAR EL EQUIVALENTE EN ASCCI DE CADA CARACTER DE UN PALABRA
ALTER PROCEDURE PAL_ASCII (@X VARCHAR(255))
AS
BEGIN
DECLARE @I INTEGER
SET @I=1
WHILE(@I<=LEN(@X))
BEGIN
PRINT SUBSTRING(@X,@I,1)+'->'+CAST (ASCII(SUBSTRING(@X,@I,1)) AS VARCHAR)
SET @I=@I+1
END
END
EXEC PAL_ASCII 'gONZALO OsCo'
--3.- ELIMNAR LOS ESPACIOS EN BLANCO DE UNA CADENA
CREATE FUNCTION ELI_ESPACIO(@X VARCHAR(255))
RETURNS VARCHAR(255)
AS
BEGIN
RETURN RTRIM(LTRIM(@X))
END
PRINT DBO.ELI_ESPACIO(' hOLA mUNDO ')
--4.- REMPLAZAR LOS ESPACIOS EN BLANCO POR '_'
CREATE FUNCTION REM_ESPACIO(@X VARCHAR(255))
RETURNS VARCHAR(255)
AS
BEGIN
SET @X =REPLACE(@X,' ','_')
RETURN (@X)
END
PRINT DBO.REM_ESPACIO(' goNZALO oSOC hERNADEZ')
--5.- CONVERTIR A MINUSCULA O MAYUSCULA UNA PALABRA
ALTER FUNCTION CON_CADENA (@X VARCHAR (255),@SW INTEGER)
RETURNS VARCHAR(255)
AS
BEGIN
IF (@SW=1)
SET @X=UPPER(@X)
ELSE
SET @X=LOWER(@X)
RETURN @X
END
PRINT DBO.CON_CADENA('GonZAlo',2)
lunes, 5 de septiembre de 2011
[INF-272] PROYECTO: 25 CONSULTAS
--*****************************************************************************************-
--*REALIZAR 25 CONSULTAS CON FUNCIONES AGREGADAS, SUBCONSULTAS Y FUNCIONES DE AGRUPAMIENTO*-
--****************************************************************************************-
--1.- ORDENAR, CONTAR Y MOSTRAR LAS SALAS SEGUN LA CANTIDAD DE MESAS DISPONIBLES
SELECT M.ID_SALA, S.NOMBRE, COUNT(M.ID_SALA)
FROM MESAS M, SALAS S
WHERE M.ESTADO='DISPONIBLE' AND M.ID_SALA=S.ID_SALA
GROUP BY M.ID_SALA, S.NOMBRE
ORDER BY COUNT (M.ID_SALA) DESC
--2.- MOSTRAR LOS PRODUCTOS QUE SOLICITO EL CLIENTE 'GONZALO PEREZ LOPEZ' EN EL CONTRATO 1
SELECT P.NOMBRE, LC.CANTIDAD
FROM CLIENTES C,CONTRATOS CO, LINEA_COTIZACION LC, PRODUCTOS P
WHERE CO.ID_CONTRATO=1 AND CO.ID_CLIENTE =(SELECT ID_CLIENTE FROM CLIENTES WHERE NOMBRE='GONZALO PEREZ LOPEZ')
AND LC.ID_CONTRATO=CO.ID_CONTRATO AND P.ID_PRODUCTO=LC.ID_PRODUCTO
--3.- MOSTRAR LOS 3 CLIENTES (EMPRESA) QUE HICIERON MAYOR CANTIDAD QUE CONTRATOS
SELECT TOP 3 CO.ID_CLIENTE,C.NOMBRE ,COUNT(*) AS nroCONTRATOS
FROM CONTRATOS CO, CLIENTES C
WHERE C.RAZON_SOCIAL IS NOT NULL AND CO.ID_CLIENTE = C.ID_CLIENTE
GROUP BY CO.ID_CLIENTE,C.NOMBRE
ORDER BY COUNT (*) DESC
--4.- CONTAR LA CANTIDAD DE EMPLEADOSE SEGUN EL TIPO QUE CARGO QUE TIENE SIN CONTAR AL GERENTE Y QUE TENGAN UN SUELDO MAYOR A 4000
SELECT E.CARGO, COUNT(E.CARGO)
FROM EMPLEADOS E
WHERE E.CARGO <> 'GERENTE' AND E.LIQUIDO_PAGABLE >4000
GROUP BY E.CARGO
--5.- CONTAR LA CANTIDAD DE PRODUCTOS QUE TIENE CADA ALMACEN
SELECT A.NOMBRE, COUNT(P.ID_ALMACEN) AS NroPRODUCTOS
FROM ALMACENES A, PRODUCTOS P
WHERE A.ID_ALMACEN = P.ID_ALMACEN
GROUP BY A.NOMBRE,P.ID_ALMACEN
--6.- DETERMINAR LA/LAS COMANDA(PEDIDO) CON LA CANTIDAD DE PRODUCTOS
SELECT LP.ID_COMANDA,COUNT(LP.ID_COMANDA) AS CANTIDAD_PRODUCTOS
FROM PEDIDOS PE , PRODUCTOS P, LINEA_PEDIDO LP
WHERE PE.ID_COMANDA=LP.ID_COMANDA AND LP.ID_PRODUCTO=P.ID_PRODUCTO
GROUP BY LP.ID_COMANDA
--7.- VER LOS PRODUCTOS QUE TRAPASO EL ALMACEN 'LA PAZ AL ALMACEN ORURO'
SELECT DISTINCT P.NOMBRE
FROM TRASPASOS T, PRODUCTOS P
WHERE T.ID_PRODUCTO=P.ID_PRODUCTO AND
T.ID_ALMACEN =(SELECT ID_ALMACEN FROM ALMACENES WHERE NOMBRE='LA PAZ') AND
T.ID_ALMACEN_DESTINO =(SELECT ID_ALMACEN FROM ALMACENES WHERE NOMBRE='ORURO')
--8.- MOSTRAR LOS CLIENTES (PERSONA) QUE HICIERON MAYOR CANTIDAD QUE CONTRATOS
SELECT TOP 3 CO.ID_CLIENTE,C.NOMBRE ,COUNT(*) AS nroCONTRATOS
FROM CONTRATOS CO, CLIENTES C
WHERE C.RAZON_SOCIAL IS NULL AND CO.ID_CLIENTE = C.ID_CLIENTE
GROUP BY CO.ID_CLIENTE,C.NOMBRE
ORDER BY COUNT (*) DESC
--9.- DETERMINAR EL MESERO QUE ATENDIÓ MAYOR NUMERO DE PEDIDOS
SELECT TOP 1 M.NOMBRE,PE.ID_MESERO,COUNT (PE.ID_MESERO) AS nROCOMANDAS
FROM PEDIDOS PE, MESEROS M
WHERE M.ID_MESERO=PE.ID_MESERO
GROUP BY M.NOMBRE,PE.ID_MESERO
ORDER BY (COUNT(*)) DESC
--10.- MOSTRAR LOS PROVEDORES QUE PROPORCIONAN EL PRODUCTO 'ARROZ'
SELECT PR.NOMBRE, PR.NIT
FROM PROVEDORES PR, SUMINISTROS S, PRODUCTOS P
WHERE PR.ID_PROVEEDOR = S.ID_PROVEEDOR AND P.ID_COMPROBANTE=S.ID_COMPROBANTE
--11.- MOSTRAR LAS SALAS QUE TIENEN TODAS LAS MESAS OCUPADAS
SELECT S.NOMBRE
FROM SALAS S
WHERE S.ID_SALA IN (SELECT M.ID_SALA
FROM SALAS S, MESAS M
WHERE S.ID_SALA=M.ID_SALA AND M.ESTADO='NO DISPONIBLE'
GROUP BY (M.ID_SALA)
HAVING COUNT(*) =6
)
--12.- MOSTRAR DE QUE ESTA COMPUESTO EL PRODUCTO 'HAMBURGUESA'
SELECT NOMBRE
FROM PRODUCTOS
WHERE ID_PRODUCTO IN (SELECT C.ID_INSUMO
FROM PRODUCTOS P, COMPOSICIONES C
WHERE P.ID_PRODUCTO=C.ID_PRODUCTO AND P.NOMBRE='HAMBURGUESA')
--13.- MOSTRAR LA CETEGORIA QUE PERTENECE EL PRODUCTO 'TOMATE'
SELECT C.NOMBRE
FROM CATEGORIAS C, PRODUCTOS P, CATEGORIA_ITEM_PRODUCTO CIP
WHERE P.ID_PRODUCTO=CIP.ID_PRODUCTO AND CIP.ID_CATEGORIA=C.ID_CATEGORIA
--14.- MOSTRAR LOS CONTRATOS QUE SE HICIERON CON LA TARIFA 'NORMAL'
SELECT C.NRO_CONTRATO
FROM CONTRATOS C, TARIFA T
WHERE T.NOMBRE='NORMAL' AND C.ID_TARIFA=T.ID_TARIFA
--15.- MOSTRAR LOS DATOS DEL CLIENTE QUE HIZO EL CONTRATO MAS CARO
SELECT C.NOMBRE, C.NIT, C.RAZON_SOCIAL
FROM CLIENTES C, CONTRATOS CO
WHERE C.ID_CLIENTE=CO.ID_CLIENTE AND CO.MONTO_TOTAL IN(
SELECT MAX(CO.MONTO_TOTAL)
FROM CONTRATOS CO
)
--16.- MOSTRAR LAS ORDENES DE DESPACHO QUE TRANSPORTARON VAJILLA 'BLANCA' O MANTELES 'AMARILLOS'
SELECT O.ID_ORDEN, O.FECHA
FROM ORDENES_DESPACHO O, LINEA_DESPACHO_VAJILLA LDV, VAJILLA V
WHERE O.ID_ORDEN=LDV.ID_ORDEN AND LDV.ID_VAJILLA=V.ID_VAJILLA AND V.COLOR='BLANCO'
UNION
SELECT O.ID_ORDEN, O.FECHA
FROM ORDENES_DESPACHO O, LINEA_DESPACHO_MANTELES LDM, MANTELES M
WHERE O.ID_ORDEN=LDM.ID_ORDEN AND LDM.ID_MANTEL=M.ID_MANTEL AND M.COLOR='BLANCO'
--17.- DETERMINAR EL PRODUCTO CON MAYOR NUMERO DE UNIDADES SEGUN EL ALMACEN
SELECT A.NOMBRE,P.NOMBRE, MAX(AP.CANTIDAD_ALMACEN) AS CANTIDAD
FROM ALMACENES A, ALMACEN_PRODUCTO AP, PRODUCTOS P
WHERE A.ID_ALMACEN=AP.ID_ALMACEN AND P.ID_PRODUCTO=AP.ID_PRODUCTO
GROUP BY A.NOMBRE,P.NOMBRE,AP.ID_PRODUCTO
--18.- MOSTRAR LAS VENTAS QUE SE HICIERON A CLIENTES EMPRESAS Y EL MONTO TOTAL QUE PAGARON
SELECT V.NRO_FACTURA, C.NOMBRE, CO.MONTO_TOTAL
FROM CLIENTES C, CONTRATOS CO, VENTAS V
WHERE C.RAZON_SOCIAL IS NOT NULL AND C.ID_CLIENTE=V.ID_CLIENTE AND V.ID_CONTRATO=CO.ID_CONTRATO
--19.- MOSTRAR EL NOMBRE DE LOS MESEROS QUE ATIENDEN EN LA SALA DENOMINADA 'COCHABAMBA'
SELECT DISTINCT M.ID_MESERO,M.NOMBRE, M.APATERNO
FROM MESEROS M, PEDIDOS P, MESAS ME, SALAS S
WHERE M.ID_MESERO=P.ID_MESERO AND P.ID_MESA=ME.ID_MESA AND ME.ID_SALA=S.ID_SALA AND S.NOMBRE='COCHABAMBA'
--20.- MOSTRAR LA VAJILLA UTILIZADA EN EL CONTRATO DE CODIGO '2'
SELECT V.NOMBRE, V.TIPO, V.COLOR
FROM VAJILLA V, LINEA_DESPACHO_VAJILLA LDV, ORDENES_DESPACHO OD, CONTRATOS C
WHERE C.ID_CONTRATO=2 AND C.ID_ORDEN=OD.ID_ORDEN AND OD.ID_ORDEN=LDV.ID_ORDEN AND LDV.ID_VAJILLA=V.ID_VAJILLA
--21.- MOSTRAR LOS MANTELES UTILIZADOS EN LOS CONTRATOS QUE SE REALIZARON EN 'LA PAZ'
SELECT DISTINCT M.ID_MANTEL,M.NOMBRE, M.TIPO, M.COLOR
FROM MANTELES M, LINEA_DESPACHO_MANTELES LDM, ORDENES_DESPACHO OD, CONTRATOS C
WHERE C.LUGAR='LA PAZ' AND C.ID_ORDEN=OD.ID_ORDEN AND OD.ID_ORDEN=LDM.ID_ORDEN AND LDM.ID_MANTEL=M.ID_MANTEL
--22.- DETERMINAR EL PRODUCTO MAS CARO DEL ALMACEN LA PAZ Y MOSTRAR LA CANTIDAD EXISTENTE
SELECT P.NOMBRE,P.CANTIDAD,P.PRECIO_COMPRA
FROM PRODUCTOS P, ALMACENES A
WHERE P.NOMBRE='LA PAZ' AND P.ID_ALMACEN=A.ID_ALMACEN AND P.PRECIO_COMPRA=
(SELECT MAX (P.PRECIO_COMPRA)
FROM ALMACENES A,PRODUCTOS P
WHERE P.NOMBRE='LA PAZ' AND P.ID_ALMACEN=A.ID_ALMACEN)
--23.- MOSTRAR LOS DATOS DEL CLIENTE QUE HIZO EL CONTRATO MAS BARATO
SELECT C.NOMBRE, C.NIT, C.RAZON_SOCIAL
FROM CLIENTES C, CONTRATOS CO
WHERE C.ID_CLIENTE=CO.ID_CLIENTE AND CO.MONTO_TOTAL IN(
SELECT MIN(CO.MONTO_TOTAL)
FROM CONTRATOS CO
)
--24.- MOSTRAR LAS SALAS QUE TIENEN TODAS LAS MESAS DESOCUPADAS
SELECT S.NOMBRE
FROM SALAS S
WHERE S.ID_SALA IN (SELECT M.ID_SALA
FROM SALAS S, MESAS M
WHERE S.ID_SALA=M.ID_SALA AND M.ESTADO='NO DISPONIBLE'
GROUP BY (M.ID_SALA)
HAVING COUNT(*) =0
)
--25.- DETERMINAR EL PRODUCTO CON MENOR NUMERO DE UNIDADES SEGUN EL ALMACEN
SELECT A.NOMBRE,P.NOMBRE, MIN(AP.CANTIDAD_ALMACEN) AS CANTIDAD
FROM ALMACENES A, ALMACEN_PRODUCTO AP, PRODUCTOS P
WHERE A.ID_ALMACEN=AP.ID_ALMACEN AND P.ID_PRODUCTO=AP.ID_PRODUCTO
GROUP BY A.NOMBRE,P.NOMBRE,AP.ID_PRODUCTO
[INF-272] PROYECTO: DB_SAMPVAB INSERTAR DATOS
--LLENANDO DATOS SALAS INSERT INTO SALAS VALUES (1,1,1,'COCHABAMBA','PLANTA BAJA') INSERT INTO SALAS VALUES (2,1,1,'SANTA CRUZ','PLANTA BAJA') INSERT INTO SALAS VALUES (3,1,1,'ORURO','PISO 1') INSERT INTO SALAS VALUES (4,1,1,'CHUQUISACA','PISO 1') INSERT INTO SALAS VALUES (5,1,1,'POTOSI','PISO 2') --LLENANDO DATOS MESAS INSERT INTO MESAS VALUES (1,1,1,1,1,1,'DISPONIBLE',1) INSERT INTO MESAS VALUES (2,1,1,2,1,2,'NO DISPONIBLE',1) INSERT INTO MESAS VALUES (3,1,1,3,1,3,'NO DISPONIBLE',1) INSERT INTO MESAS VALUES (4,1,1,4,2,1,'DISPONIBLE',1) INSERT INTO MESAS VALUES (5,1,1,5,2,2,'NO DISPONIBLE',1) INSERT INTO MESAS VALUES (6,1,1,6,2,3,'DISPONIBLE',1) INSERT INTO MESAS VALUES (7,1,1,1,1,1,'NO DISPONIBLE',2) INSERT INTO MESAS VALUES (8,1,1,2,1,2,'DISPONIBLE',2) INSERT INTO MESAS VALUES (9,1,1,3,1,3,'DISPONIBLE',2) INSERT INTO MESAS VALUES (10,1,1,4,2,1,'NO DISPONIBLE',2) INSERT INTO MESAS VALUES (11,1,1,5,2,2,'NO DISPONIBLE',2) INSERT INTO MESAS VALUES (12,1,1,6,2,3,'DISPONIBLE',2) INSERT INTO MESAS VALUES (13,1,1,1,1,1,'NO DISPONIBLE',3) INSERT INTO MESAS VALUES (14,1,1,2,1,2,'NO DISPONIBLE',3) INSERT INTO MESAS VALUES (15,1,1,3,1,3,'NO DISPONIBLE',3) INSERT INTO MESAS VALUES (16,1,1,4,2,1,'NO DISPONIBLE',3) INSERT INTO MESAS VALUES (17,1,1,5,2,2,'NO DISPONIBLE',3) INSERT INTO MESAS VALUES (18,1,1,6,2,3,'DISPONIBLE',3) INSERT INTO MESAS VALUES (19,1,1,1,1,1,'NO DISPONIBLE',4) INSERT INTO MESAS VALUES (20,1,1,2,1,2,'DISPONIBLE',4) INSERT INTO MESAS VALUES (21,1,1,3,1,3,'DISPONIBLE',4) INSERT INTO MESAS VALUES (22,1,1,4,2,1,'DISPONIBLE',4) INSERT INTO MESAS VALUES (23,1,1,5,2,2,'NO DISPONIBLE',4) INSERT INTO MESAS VALUES (24,1,1,1,1,1,'DISPONIBLE',5) INSERT INTO MESAS VALUES (25,1,1,2,1,2,'DISPONIBLE',5) INSERT INTO MESAS VALUES (26,1,1,3,2,1,'NO DISPONIBLE',5) INSERT INTO MESAS VALUES (27,1,1,4,2,2,'NO DISPONIBLE',5) --LLENANDO DATOS TARIFA INSERT INTO TARIFA VALUES (1,1,1,'NORMAL','0') INSERT INTO TARIFA VALUES (2,1,1,'PROMOCION INVIERNO','10') INSERT INTO TARIFA VALUES (3,1,1,'PROMOCION VERANO','15') INSERT INTO TARIFA VALUES (4,1,1,'PROMOCION CLIENTE FRECUENTE','20') INSERT INTO TARIFA VALUES (5,1,1,'PROMOCION CLIENTE ANTIGUO FRECUENTE','25') --LLENANDO DATOS CLIENTES INSERT INTO CLIENTES VALUES (1,1,'GONZALO PEREZ LOPEZ', '6522242LP',NULL) INSERT INTO CLIENTES VALUES (2,1,'MARLENE LOAYZA ROQUE', '4112567LP',NULL) INSERT INTO CLIENTES VALUES (3,1,'JAIME RECABADO ARANDA', '7084542LP',NULL) INSERT INTO CLIENTES VALUES (4,1,'MARIO PEREDO ARUQUIPA', '6522242LP',NULL) INSERT INTO CLIENTES VALUES (5,1,'MARIA SOLANO BARRIOS', '5512789LP',NULL) INSERT INTO CLIENTES VALUES (6,1,'JAZMIN CORONEL LIMA', '7212349CB',NULL) INSERT INTO CLIENTES VALUES (7,1,'MAUEK GARCIA QUISPE', '4587678SC',NULL) INSERT INTO CLIENTES VALUES (8,1,'PAPER KING', '6522242','SOCIEDAD COLECTIVA') INSERT INTO CLIENTES VALUES (9,1,'PLASMAR', '4112567','SOCIEDAD ANONIMA') INSERT INTO CLIENTES VALUES (10,1,'PULLMAN', '6784542','SOCIEDAD ANONIMA') INSERT INTO CLIENTES VALUES (11,1,'MADEPA', '4652242','SOCIEDAD ANONIMA') INSERT INTO CLIENTES VALUES (12,1,'KIMBERLY BOLIVIA', '7162789','SOCIEDAD ANONIMA') INSERT INTO CLIENTES VALUES (13,1,'IND. VENADO', '6212159','SOCIEDAD ANONIMA') INSERT INTO CLIENTES VALUES (14,1,'INDUMAR', '5459678','SOCIEDAD COLECTIVA') INSERT INTO CLIENTES VALUES (15,1,'CARMAR', '6587607','SOCIEDAD COOPERATIVA') --LLENANDO DATOS MESEROS INSERT INTO MESEROS VALUES (0001, 1, 1, 'JUAN JOSE','RAMOS','LLANOS'); INSERT INTO MESEROS VALUES (0002, 1, 1, 'MARIA','PEREZ','QUEA'); INSERT INTO MESEROS VALUES (0003, 1, 1, 'ALVARO','RALDES','QUIROGA'); INSERT INTO MESEROS VALUES (0004, 1, 1, 'PEDRO','ESCOBAR','LOPEZ'); INSERT INTO MESEROS VALUES (0005, 1, 1, 'JAIME','GONZALES','SOTO'); INSERT INTO MESEROS VALUES (0006, 1, 1, 'XIMENA','ZAPATA','CHAVEZ'); INSERT INTO MESEROS VALUES (0007, 1, 1, 'YAQUELINE','ROBLES','XIMENES'); INSERT INTO MESEROS VALUES (0008, 1, 1, 'JHONATAN','QUIROZ','SALVATIERRA'); INSERT INTO MESEROS VALUES (0009, 1, 1, 'BRUNO','DIAZ','SAMBRANA'); INSERT INTO MESEROS VALUES (0010, 1, 1, 'ROBIN','DORIA','MENDEZ'); INSERT INTO MESEROS VALUES (0011, 1, 1, 'MARCELO','SOSA','SILLO'); --LLENANDO DATOS PROVEEDORES INSERT INTO PROVEDORES VALUES(1,1,1,'LA ESTRELLA S.R.L.','Av. Ecuador No 123, Z. Sekata El Alto','7045345','SOCIEDAD DE RESPONSABILIDAD LIMITADA','2851718') INSERT INTO PROVEDORES VALUES(2,1,1,'NESTLÉ BOLIVIA S.R.L.','Parque Industrial U.V. 31 Santa Cruz','7245647','SOCIEDAD DE RESPONSABILIDAD LIMITADA','4498219') INSERT INTO PROVEDORES VALUES(3,1,1,'CORPORACION DILLMANN S.A.','Carlos Peña s/n 169 Cochabamba','3052311','SOCIEDAD ANONIMA','4262009-4261256') INSERT INTO PROVEDORES VALUES(4,1,1,'CERVECERÍA BOLIVIANA NACIONAL SA','Av Montes 400 Esq. Calle Chuquisaca La Paz','3467854','SOCIEDAD ANONIMA','2453354-2454454') INSERT INTO PROVEDORES VALUES(5,1,1,'COMPAÑIA DE ALIMENTOS DELIZIA','Av. Abrojo 5100 Carretera a Viacha Km 7 El Alto','8722345','SOCIEDAD ANONIMA','2821118') INSERT INTO PROVEDORES VALUES(6,1,1,'INDUSTRIAS DE ACEITE S.A.','Km. 6.5 Carretera Al Norte Santa Cruz','3422567','SOCIEDAD ANONIMA','4433210') INSERT INTO PROVEDORES VALUES(7,1,1,'IRUPANA ANDEAN ORGANIC FOODS S.A.','Av. Ecuador No.2249, Zona Sopocachi La Paz','6547321','SOCIEDAD ANONIMA','2152936') INSERT INTO PROVEDORES VALUES(8,1,1,'MOLINO ANDINO S.A','Km7. Carretera a Oruro La Paz','33545621','SOCIEDAD ANONIMA','2852172') INSERT INTO PROVEDORES VALUES(9,1,1,'FABRICA DE CHOCOLATES TABOADA S.R.L.','José Mostajo N° 15 Sucre','5733789','SOCIEDAD DE RESPONSABILIDAD LIMITADA','3851402') INSERT INTO PROVEDORES VALUES(10,1,1,'AMAZONAS','Av. El Maderero, s/n 47 Riberalta','8633461','SOCIEDAD DE RESPONSABILIDAD LIMITADA','3572031') INSERT INTO PROVEDORES VALUES(11,1,1,'FABRICA DE PALMITOS ITENEZ S.R.L.','Parque Industrial Manzana 8-A Santa Cruz de la Sierra','5421241','SOCIEDAD DE RESPONSABILIDAD LIMITADA','3475234') INSERT INTO PROVEDORES VALUES(12,1,1,'MOLINO Y FABRICA DE FIDEOS AURORA','Km7. Carretera a Oruro La Paz','8734567','SOCIEDAD ANONIMA','2852172') INSERT INTO PROVEDORES VALUES(13,1,1,'BOLHISPANIA S.A.','Parque Excombatientes No. 182 Cochabamba','5641241','SOCIEDAD ANONIMA','4407418') INSERT INTO PROVEDORES VALUES(14,1,1,'INDUSTRIAS ALIMENTICIAS DEL VALLE HNOS. S.R.L.','Av Montes 140 Esq. Calle Chuquisaca Cochabamba','2345312','SOCIEDAD DE RESPONSABILIDAD LIMITADA','4454454') INSERT INTO PROVEDORES VALUES(15,1,1,'CARGILL DE BOLIVIA','Calle Andres Manzo. 250, Zona Sur Santa Cruz','7565345','SOCIEDAD ANONIMA','3336750') INSERT INTO VAJILLA VALUES (1,1,1,'PLATO LLANO 1','PLATO LLANO','BLANCO',450) INSERT INTO VAJILLA VALUES (2,1,1,'PLATO HONDO 1','PLATO HONDO','BLANCO',450) INSERT INTO VAJILLA VALUES (3,1,1,'PLATO POSTRE 1','PLATO POSTRE','BLANCO',650) INSERT INTO VAJILLA VALUES (4,1,1,'PLATO LLANO 2','PLATO LLANO','BEIGE',250) INSERT INTO VAJILLA VALUES (5,1,1,'PLATO HONDO 2','PLATO HONDO','BEIGE',300) INSERT INTO VAJILLA VALUES (6,1,1,'PLATO POSTRE 2','PLATO POSTRE','BEIGE',450) INSERT INTO VAJILLA VALUES (7,1,1,'PLATO LLANO 3','PLATO LLANO','BLANCO AZUL',150) INSERT INTO VAJILLA VALUES (8,1,1,'PLATO HONDO 3','PLATO HONDO','BLANCO AZUL',200) INSERT INTO VAJILLA VALUES (9,1,1,'PLATO POSTRE 3','PLATO POSTRE','BLANCO AZUL',200) INSERT INTO VAJILLA VALUES (10,1,1,'SOPERAS 1','SOPERAS','BLANCO',50) INSERT INTO VAJILLA VALUES (11,1,1,'SALSERAS 1','SALSERAS','BLANCO',55) INSERT INTO VAJILLA VALUES (12,1,1,'FUENTES Y BANDEJAS 1','BANDEJAS','BLANCO',200) INSERT INTO VAJILLA VALUES (13,1,1,'TAZA DE CONSOME 1','TAZA DE CONSOME','BLANCO',450) INSERT INTO VAJILLA VALUES (14,1,1,'TAZA DE TÉ 1','TAZA DE TE','BLANCO',450) INSERT INTO VAJILLA VALUES (15,1,1,'TAZA DE CAFE 1','TAZA DE CAFE','BLANCO',450) --LLENANDO DATOS MANTELES INSERT INTO MANTELES VALUES (1,1,1,'MANTEL REDONDO PEQUEÑO','REDONDO', 'BLANCO', 5 ) INSERT INTO MANTELES VALUES (2,1,1,'MANTEL REDONDO MEDIANO','REDONDO', 'BLANCO', 15 ) INSERT INTO MANTELES VALUES (3,1,1,'MANTEL REDONDO GRANDE','REDONDO', 'BLANCO', 4 ) INSERT INTO MANTELES VALUES (4,1,1,'MANTEL CUADRADO PEQUEÑO','CUADRADO', 'ROSA', 6 ) INSERT INTO MANTELES VALUES (5,1,1,'MANTEL CUADRADO MEDIANO','CUADRADO', 'BEIGE', 11 ) INSERT INTO MANTELES VALUES (6,1,1,'MANTEL CUADRADO GRANDE','CUADRADO', 'CAFE', 5 ) INSERT INTO MANTELES VALUES (7,1,1,'MANTEL RECTANGULAR PEQUEÑO','RECTANGULAR', 'ROSA', 6 ) INSERT INTO MANTELES VALUES (8,1,1,'MANTEL RECTANGULAR MEDIANO','RECTANGULAR', 'BEIGE', 11 ) INSERT INTO MANTELES VALUES (9,1,1,'MANTEL RECTANGULAR GRANDE','RECTANGULAR', 'AMARILLO', 5 ) INSERT INTO MANTELES VALUES (10,1,1,'MANTEL OVALADO PEQUEÑO','OVALADO', 'AZUL', 3 ) INSERT INTO MANTELES VALUES (11,1,1,'MANTEL OVALADO MEDIANO','OVALADO', 'BLANCO', 3 ) INSERT INTO MANTELES VALUES (12,1,1,'MANTEL OVALADO GRANDE','OVALADO', 'NEGRO', 3 ) --LLENANDO DATOS ALMACENES INSERT INTO ALMACENES VALUES (1,1,1,'CENTRO','Edif. Mcal. Ballivián P. 14 Of. 1403 (Z. Central) - La Paz, LA PAZ') INSERT INTO ALMACENES VALUES (2,1,1,'MAX PAREDES','Edif. Electra Piso 3, c. Mercado (z. Max Paredes) - La Paz, LA PAZ') INSERT INTO ALMACENES VALUES (3,1,1,'SAN MIGUEL','c. Max Paredes No. 589 (Z. Sur) - La Paz, LA PAZ') INSERT INTO ALMACENES VALUES (4,1,1,'MIRAFLORES','c. Litoral No. 123 (Z. Moraflores) - La Paz, LA PAZ') INSERT INTO ALMACENES VALUES (5,1,1,'EL ALTO','c. Lourdes No. 589 (Z. 16 de Julio) - El Alto, LA PAZ') INSERT INTO ALMACENES VALUES (6,1,1,'VILLAFATIMA','c. Rosendo Gutierrez Nro. 410 (Z. Villafatima) - La Paz, LA PAZ') --LLENANDO DATOS EMPLEADOS INSERT INTO EMPLEADOS VALUES (1,1,1,'JAIME QUIROGA QUEA','GERENTE',20,8,8,1000,1, 300, 300,7500) INSERT INTO EMPLEADOS VALUES (2,1,1,'SONIA PERALTA GUTIERREZ','CONTADOR',20,8,8,800,1, 250, 300,5500) INSERT INTO EMPLEADOS VALUES (3,1,1,'JHOSELIN PATZI LLANOS','SECRETARIA',24,8,8,8000,1, 250, 300,5500) INSERT INTO EMPLEADOS VALUES (4,1,1,'NICOLAS CHOQUE RAMIREZ','JEFE DE BARRA',20,9,9,400,0, 0, 300,5500) INSERT INTO EMPLEADOS VALUES (5,1,1,'ADALID PEREZ HUANCA','JEFE DE COCINA',20,8,8,400,1, 250, 300,4500) INSERT INTO EMPLEADOS VALUES (6,1,1,'ANDRES XIMENEZ QUISPE','METRE',24,9,9,1000,1, 250, 250,4500) INSERT INTO EMPLEADOS VALUES (7,1,1,'LUCIO ALVARADO MENDOZA','JEFE DE LIMPIEZA',24,10,10,400,1, 250, 250,3400)
martes, 30 de agosto de 2011
[INF-272] TAREA3: 33 Consultas Simples
--1. Listar todos los funcionarios.
select * from funcionario
--2. Listar las unidades que tengan el texto "EDUCACION" en su descripción
select * from unidad where descripcion LIKE '%EDUCACION%'
--3. Listar el código del funcionario que tiene como nombre: "LUISA REYES".
select item from funcionario where nombre='Luisa Reyes'
--4. Listar todos los distritos.
select * from distrito
--5. Listar los proyectos que se iniciaron en fecha "03-30-2010".
select * from proyecto where fechainicio='03-30-2010'
--6. Listar los distritos que tengan el texto "CALIDAD DE VIDA MEDIA".
select * from distrito where descripcion= 'CALIDAD DE VIDA MEDIA'
--7. Listar los ítems de funcionarios cuyos telefonos se inicie con “732”.
select f.nombre, t. nrotelefono from funcionario f, telefonof t where f.item=t.item
and t.nrotelefono like '732%'
--8. Listar los proyectos cuyo código termine con “1?”.
select * from proyecto where codp like '%1'
--9. Listar los proyectos cuyo carnet empiece con “0000”.
select * from proyecto where codp like '0000%'
--10. Listar todas las unidades.
select * from unidad
--11. Determinar la cantidad de pasos que siguió el proyecto “000006”
select count(*) from seguimiento where codproy='000006'
--12. Determinar la cantidad de documentos con extension “aplicable”
select count (*) from documento where extencion='aplicable'
--13. Determinar la cantidad de documentos tipo “Minuta Descriptiva” y extension “aplicable”
select count (*) from documento where tipo_contenido='Minuta Descriptiva' and
extencion='aplicable'
--14. Listar todos los proyectos que se iniciaron a partir del ‘20/12/1990’
select * from proyecto where fechainicio > 20/12/1990
--15. Listar todos los documentos correspondientes al proyecto ‘000009’
select d.nombre, d.descripcion from documento d, seguimiento s
where s.codproy='000009' and s.coddoc=d.codd
--16. Cuantos y cuales son pasos en los que intervino el funcionario 146?.
select count(*) from seguimiento s, documento d
where s.item='1467'
--17. Quién es el funcionario 104?
select * from funcionario f where f.item='104'
--18. Cuántos registros tiene la tabla unidad?
select count (*) from unidad
--19. El remanente del proyecto ‘000005’ esta correcto?
select * from presupuesto where remanente is not null
--20. Cuánto se presupuesto en todos los proyectos?
select sum(costofin+costoini) from presupuesto
--21. Cuántos proyectos se llevan a cabo en el distrito 0006? (4 filas)
select count (*) from dist_proy where nrodist='0006'
--22. Cuántos distritos son del tipo ‘CALIDAD DE VIDA BAJA’?
select count (*) from distrito where descripcion='CALIDAD DE VIDA BAJA'
--23. Mostrar los proyectos que se adjudico la empresa ‘Coca Cola’
select p.nombre from proyecto p,adjudicacion a, empresa e
where e.nombre='coca-cola' and e.nit=a.nit and a.codproy=p.codp
--24. Determinar el monto entre todos los proyectos adjudicados por la empresa ‘000008’?
select sum(pr.costofin) from adjudicacion a, presupuesto pr, proyecto p
where a.nit='000008' and a.codProy=p.codp and p.codp= pr.codproy
--25. Cuántos son los proyectos presupuestados con mas de 15.000Bs?
select p.nombre from proyecto p, presupuesto pr where pr.costoini>15000
--26. Cuántos son los proyectos financiados por el Banco Mundial u ONG?
select count(*) from presupuesto pr , proyecto p, tipo_financiamiento tp
where tp.descripcion='Banco mundial' or tp.descripcion='ong' and p.codp=pr.codproy
and tp.nrocp=pr.nro_cp
--27. Mostrar los proyectos financiados por la empresa ‘SOBOCE’?
select p.nombre from proyecto p,adjudicacion a, empresa e
where e.nombre='SOBOCE' and e.nit=a.nit and a.codproy=p.codp
--28. Determinar los proyectos con monto superior a 20.000 de costo inicial?
select p.nombre from proyecto p, presupuesto pr where pr.costoini>20000
--29. Determinar la cantidad de funcionarios de la unidad ’cobranzas’?
select count(*) from funcionario where nombreu='cobranza'
--30. Mostrar la unidad en la que se encuentra el funcionario ‘MENDEZ PRIETO VICTOR’?
select nombreu from funcionario where nombre='mendez prieto victor'
--31. Determinar el numero de usuarios cuyo idUsuario empieza con el carácter ‘M’?
select count(*) from usuario where idusuario like 'M%'
--32. Determinar la cantidad de teléfonos del funcionario104?
select count(*) from telefonof where item=104
--33. Mostrar los números de teléfono de la empresa 524413?
select count(*) from telefonoe where nit=524413
[INF-272] INVESTIGACION: INNER, LEFT, RIGHT JOIN
INNER JOIN
A partir de este momento, empezamos esa propiedad de las bases de datos relacionales y le damos la bienvenida a las uniones (JOINS es su nombre es inglés). Los tipos de uniones que podemos realizar sonINNER JOINS (Uniones Interiores) y LEFT JOINS (Uniones por la Izquierda).
Las uniones más comunes con las del tipo Interior, es decir, INNER JOINS, las cuales son las más sencillas. La forma en la que hacemos un INNER JOIN es simplemente especificando las columnas de las tablas de las que queremos hacer la consulta, escribiendo explícitamente la palabra INNER JOIN inmediatamente después, o simplemente escribiendo una coma entre la tabla uno y la tabla dos, posteriormente DEBEMOS especificar una condición “WHERE” a cumplir. Así por ejemplo, imaginemos la siguiente consulta:
SELECT gente.nombre, gente.apellido, empresa.sueldo, empresa.cargo FROM gente, empresa WHERE gente.cod_empleado = empresa.cod_empleado;
La consulta anterior le dice a MySQL que SELECCIONE de la tabla gente, tanto la columna nombre como la columna apellido; y de la tabla empresa, la columna sueldo y la columna cargo EN DONDE la columna cod_empleado de la tabla gente sea igual a la columna cod_empleado de la tabla empresa. Esta misma consulta podría haberse hecho de la siguiente manera:
SELECT gente.nombre, gente.apellido, empresa.sueldo, empresa.cargo FROM gente INNER JOIN empresa ON gente.cod_empleado = empresa.cod_empleado;
Como verán, la forma de especificar las tablas de donde estamos sacando la información es simplemente con un punto (.), especificando primero el nombre de la tabla y posteriormente el nombre de la columna, esto tanto después de la palabra SELECT, como después de la palabra WHERE.
on uniones en las que le pedimos a MySQL que nos muestre los datos contenidos en las tablas inmiscuidas en la consulta, sin importar que, por ejemplo, en un par de filas el valor nulo (NULL) aparezca.
Contrario a los INNER JOINS, los LEFT JOINS no pueden llevar una condicionante WHERE. Las razones son, claro está, que para cumplir una condicionante WHERE, la consulta debe arrojar solamente los resultados que concuerden exactamente con la condición, y nuestro deseo es precisamente lo contrario.
La sintaxis de los LEFT JOINS es bastante similar a la de los INNER JOINS, salvo que debemos utilizar la sentencia ON forzosamente, de la siguiente manera:
SELECT tabla1.columna1, tabla2.columna1 FROM tabla1 LEFT JOIN tabla2 ON tabla1.columna3 = tabla2.columna1;
Finalmente, como recomendación habremos de decir que los LEFT JOINS son herramientas que podemos utilizar en casos especiales. Sin embargo, debemos tener cuidado en el orden en el que especificamos las tablas en un LEFT JOIN, ya que si la tabla de la izquierda es la tabla que contiene,… digamos menos datos, y la de la derecha es la que contiene más, las filas que no concuerden serán ignoradas por MySQL.
RIGHT JOINs
Funciona de forma identica que los LEFT JOIN con la particularidad que toman como referencia los elementos de la derecha y no de izquierda.
lunes, 29 de agosto de 2011
[INF-272] INFORME: Generar Reportes Con el IREPORT 3.7.4
[INF-272] PROYECTO: Sistema de Administración para Microempresas Dedicadas A La Produccion Y Venta De Alimentos
CREATE DATABASE DB_MVAB
USE DB_MVAB
CREATE TABLE SALAS(
id_sala int not null,
obj_version int,
estado_bd bit,
nombre varchar(255),
ubicacion varchar(255)
)
CREATE TABLE MESAS(
id_mesa int not null,
obj_version int,
estado_bd bit,
nro_mesa int,
ubiacion_x int,
ubiacion_y int,
estado varchar(255),
id_sala int
)
CREATE TABLE PEDIDOS(
id_comanda int not null,
obj_version int,
estado_bd bit,
nro_pedido int,
importe numeric(19,2),
estado varchar(255),
id_mesa int,
id_mesero int
)
CREATE TABLE VENTAS(
id_venta int not null,
obj_version int,
estado_bd bit,
fecha datetime,
importe numeric(19,2),
tipo varchar(255),
nro_factura int,
id_pedido int,
id_contrato int,
id_cliente int,
id_tarifa int
)
CREATE TABLE TARIFA(
id_tarifa int not null,
obj_version int,
estado_bd bit,
nombre varchar(255),
descuento varchar(255)
)
CREATE TABLE CLIENTES(
id_cliente int not null,
obj_version int,
nombre varchar(255),
nit varchar(255),
razon_social varchar(255)
)
CREATE TABLE MESEROS(
id_mesero int not null,
obj_version int,
estado_db bit,
nombre varchar(255),
apaterno varchar(255),
amaterno varchar(255)
)
CREATE TABLE LINEA_PEDIDO(
id_comanda int not null,
cantidad int,
id_producto int
)
CREATE TABLE ACTIVIDADES(
id_mesero int not null,
obj_version int,
nombre_actividad varchar(255),
tiemponormal numeric (19,2),
tiempominimo numeric (19,2),
tiempoestandar numeric (19,2),
id_producto int,
actividad_posicion int
)
CREATE TABLE SUMINISTROS(
id_comprobante int not null,
obj_version int,
estado_bd bit,
fecha datetime,
importe numeric (19,2),
nro_factura int,
id_proveedor int
)
CREATE TABLE CONTRATOS(
id_contrato int not null,
obj_version int,
estado_bd bit,
nro_contrato int,
fecha_pago datetime,
nro_personas int,
fecha_evento datetime,
hora_evento datetime,
lugar varchar (255),
tipo_servicio varchar (255),
monto_total numeric (19,2),
id_cliente int,
id_tarifa int,
id_orden int
)
CREATE TABLE LINEA_COTIZACION(
id_contrato int,
cantidad int,
id_producto int
)
CREATE TABLE PRODUCTOS(
id_producto int not null,
obj_version int,
estado_bd bit,
codigo varchar (255),
nombre varchar (255),
cantidad numeric (19,2),
precio numeric (19,2),
precio_compra numeric (19,2),
precio_presentacion numeric (19,2),
peso_limpio numeric (19,2),
id_unidad_almacen int,
id_unidad_receta int,
id_unidad_venta int,
id_comprobante int,
id_almacen int,
venta bit,
compuesto bit,
capacidad_lote numeric (19,2)
)
CREATE TABLE CATEGORIA_ITEM_PRODUCTO(
id_producto int,
id_categoria int
)
CREATE TABLE PROVEDORES(
id_proveedor int not null,
obj_version int,
estado_bd bit,
nombre varchar(255),
direccion varchar(255),
nit varchar(255),
razon_social varchar(255),
telefono varchar(255)
)
CREATE TABLE ORDENES_DESPACHO(
id_orden int not null,
obj_version int,
estado_bd bit,
fecha datetime,
estado bit
)
CREATE TABLE LINEA_DESPACHO_MANTELES(
id_orden int,
cantidad int,
id_mantel int
)
CREATE TABLE ALMACEN_PRODUCTO(
id_almacen int,
id_producto int,
cantidad_almacen numeric(19,2)
)
CREATE TABLE COMPOSICIONES(
id_producto int,
cantidad_insumo numeric(19,2),
id_insumo int
)
CREATE TABLE EMPLEADOS_PRODUCTO(
id_producto int,
modl bit,
modnas bit,
id_empleado int
)
CREATE TABLE CATEGORIAS(
id_categoria int not null,
obj_version int,
nombre varchar (255)
)
CREATE TABLE VAJILLA(
id_vajilla int not null,
obj_version int,
estado_bd bit,
nombre varchar(255),
tipo varchar(255),
color varchar(255),
cantidad int
)
CREATE TABLE LINEA_DESPACHO_VAJILLA(
id_orden int,
cantidad int,
id_vajilla int
)
CREATE TABLE MANTELES(
id_mantel int not null,
obj_version int,
estado_bd bit,
nombre varchar(255),
tipo varchar(255),
color varchar(255),
cantidad int
)
CREATE TABLE MANTELES(
id_mantel int not null,
obj_version int,
estado_bd bit,
nombre varchar(255),
tipo varchar(255),
color varchar(255),
cantidad int
)
CREATE TABLE ALMACENES(
id_almacen int not null,
obj_version int,
estado_bd bit,
nombre varchar(255),
ubicacion varchar(255)
)
CREATE TABLE TRASPASOS(
id_almacen int,
id_producto int,
id_almacen_destino int,
nro_comprobante varchar(255),
fecha datetime,
cantidad numeric (19,2)
)
CREATE TABLE PRODUCTOS_SUBAREAS(
id_area int,
tiempouso_lote numeric (19,2),
costo_unidadenergetica numeric (19,2),
consummo_hora numeric (19,2),
costo_mantenimiento numeric (19,2),
horasentremantenimiento numeric (19,2),
id_producto int
)
CREATE TABLE AREAS(
id_area int not null,
obj_version int,
nombre varchar(255),
porcentaje_asignado_mol numeric (19,2),
porcentaje_asignado_modnes numeric (19,2),
id_areapadre int,
superficie_area numeric (19,2)
)
CREATE TABLE EMPLEADOS(
id_empleado int not null,
obj_version int,
estado_bd bit,
nombre varchar(255),
cargo varchar(255),
dias_mes int,
horas_dia numeric (19,2),
horas_basico numeric (19,2),
bonos numeric (19,2),
numero_dominicales int,
monto_dominicales numeric(19,2),
descuentos numeric(19,2),
liquido_pagable numeric(19,2)
)
alter table EMPLEADOS add
constraint pk_empleado primary key (id_empleado)
alter table AREAS add
constraint pk_areas primary key (id_area),
constraint fk_areas foreign key (id_areapadre)
references AREAS(id_area)
alter table CATEGORIAS add
constraint pk_categoria primary key (id_categoria)
alter table PROVEDORES add
constraint pk_provedores primary key (id_proveedor)
alter table SUMINISTROS add
constraint pk_suministro primary key (id_comprobante),
constraint fk_provedor foreign key (id_proveedor)
references PROVEDORES(id_proveedor)
alter table SALAS add
constraint pk_salas primary key (id_sala)
alter table MESAS add
constraint pk_mesas primary key (id_mesa),
constraint fk_salas foreign key (id_sala)
references SALAS(id_sala)
alter table MESEROS add
constraint pk_meseros primary key (id_mesero)
alter table PEDIDOS add
constraint pk_pedidos primary key (id_comanda),
constraint fk_mesas foreign key (id_mesa)
references MESAS(id_mesa),
constraint fk_mesero foreign key (id_mesero)
references MESEROS(id_mesero)
alter table VAJILLA add
constraint pk_vajilla primary key (id_vajilla)
alter table ORDENES_DESPACHO add
constraint pk_ordenes_despacho primary key (id_orden)
alter table LINEA_DESPACHO_VAJILLA add
constraint fk_vajilla foreign key (id_vajilla)
references VAJILLA(id_vajilla),
constraint fk_ordenes_despacho foreign key (id_orden)
references ORDENES_DESPACHO(id_orden)
alter table MANTELES add
constraint pk_mateles primary key (id_mantel)
alter table LINEA_DESPACHO_MANTELES add
constraint fk_matel foreign key (id_mantel)
references MANTELES(id_mantel),
constraint fk_ordenes_despacho_ foreign key (id_orden)
references ORDENES_DESPACHO(id_orden)
alter table ALMACENES add
constraint pk_almacenes primary key (id_almacen)
alter table CLIENTES add
constraint pk_clientes primary key (id_cliente)
alter table TARIFA add
constraint pk_tarifas primary key (id_tarifa)
alter table VENTAS add
constraint pk_ventas primary key (id_venta),
constraint fk_pedido foreign key (id_pedido)
references PEDIDOS(id_comanda),
constraint fk_contrato foreign key (id_contrato)
references CONTRATOS(id_contrato),
constraint fk_cliente_ foreign key (id_cliente)
references CLIENTES(id_cliente),
constraint fk_tarifa_ foreign key (id_tarifa)
references TARIFA(id_tarifa)
alter table COMPOSICIONES add
constraint fk_productoi foreign key (id_producto)
references PRODUCTOS(id_producto)
alter table CONTRATOS add
constraint pk_contratos primary key (id_contrato),
constraint fk_cliente foreign key (id_cliente)
references CLIENTES(id_cliente),
constraint fk_tarifa foreign key (id_tarifa)
references TARIFA(id_tarifa),
constraint fk_orden foreign key (id_tarifa)
references ORDENES_DESPACHO(id_orden)
alter table PRODUCTOS add
constraint pk_productos_ primary key (id_producto),
constraint fk_comprobante_ foreign key (id_comprobante)
references SUMINISTROS(id_comprobante),
constraint fk_almacen foreign key (id_almacen)
references ALMACENES(id_almacen)
alter table LINEA_COTIZACION add
constraint fk_contrato__ foreign key (id_contrato)
references CONTRATOS(id_contrato),
constraint fk_producto__ foreign key (id_producto)
references PRODUCTOS(id_producto)
alter table LINEA_PEDIDO add
constraint fk_pedidos_ foreign key (id_comanda)
references PEDIDOS(id_comanda),
constraint fk_producto_ foreign key (id_producto)
references PRODUCTOS(id_producto)
alter table ACTIVIDADES add
constraint pk_actividades primary key (id_actividad),
constraint fk_producto foreign key (id_producto)
references PRODUCTOS(id_producto)
alter table CATEGORIA_ITEM_PRODUCTO add
constraint fk_categoria foreign key (id_categoria)
references CATEGORIAS(id_categoria),
constraint fk_productoo foreign key (id_producto)
references PRODUCTOS(id_producto)
alter table EMPLEADOS_PRODUCTO add
constraint fk_empleado foreign key (id_empleado)
references EMPLEADOS(id_empleado),
constraint fk_productooo foreign key (id_producto)
references PRODUCTOS(id_producto)
alter table ALMACEN_PRODUCTO add
constraint fk_almacen_ foreign key (id_almacen)
references ALMACENES(id_almacen),
constraint fk_productos foreign key (id_producto)
references PRODUCTOS(id_producto)
alter table TRASPASOS add
constraint fk_almaceno foreign key (id_almacen)
references ALMACENES(id_almacen),
constraint fk_almacend foreign key (id_almacen_destino)
references ALMACENES(id_almacen),
constraint fk_productosx foreign key (id_producto)
references PRODUCTOS(id_producto)
alter table PRODUCTOS_SUBAREAS add
constraint fk_area foreign key (id_area)
references AREAS(id_area),
constraint fk_productosa foreign key (id_producto)
references PRODUCTOS(id_producto)
viernes, 26 de agosto de 2011
[INF-272] INFORME: Copia Seguridad, Restaurar, Importar y Exportar
1.- Copia de seguridad de una base de datos SQL-SERVER
Paso1. Abrir el Explorador de objetos (Panel izquierdo) En ahí estarán las bases de datos que tenemos en nuestro servidor, Debemos expandir la rama de Bases de datos y selecciona la base de datos de la que quieres hacer la copia de seguridad, con el botón derecho de mouse, selecciona Tareas y luego escoge Copia de seguridad.
Paso2. Luego nos aparecerá un cuadro de diálogo. En caso de querer hacer la copia de seguridad en el directorio que SQL Server Express usar por defecto haremos clic en el botón Aceptar para hacer la copia, Pero si queremos elegir la ruta en la que se hará la copia, tendrás que pulsar en el botón Agregar y direccionar donde queremos guardarlo.
Paso3. Al pulsar en el botón Agregar, podremos elegir dónde se guardará la copia de seguridad donde deberos de ponerse el nombre con la extensión .bak
Paso4. Una vez escrito el nombre de la copia de seguridad, tendremos el valor que inicialmente nos mostró el Management Studio además del que nosotros hemos elegido, Ahora, como no necesitamos dos copias de seguridad, borraremos la que indicada en el disco C (el de Archivos de programa). Para borrarla, presionaremos en el botón Quitar. Si se deja los dos nombres, se hará una copia en cada una de las ubicaciones que se haya indicado.
Paso5.Presionamos aceptar, si se guarda el copia de seguridad con el mismo nombre se debo considerar anexar o sobrescribir copia de seguridad.
Paso6. Ahora solo presionamos el botón Aceptar y si todo fue bien nos mostrará un mensaje que nos indicará si la copia de seguridad se ha realizado correctamente
2.- Restaurar base de datos en SQL-SERVER Para restaurar una base de datos a partir de una copia de seguridad de vemos seguir los siguientes pasos. Paso1. En el Explorador de objetos, pulsa con el botón derecho del mouse sobre el elemento Bases de datos y seleccionar Restaurar base de datos. Paso 2. Si vamos a restaurar una nueva base de datos, escribiremos el nombre correspondiente de la base de datos en la caja de texto “A una base de datos”. Paso3. Para poder hacer la restauración debemos indicar dónde está la copia de seguridad. Para ello marcamos la opción Desde dispositivo y pulsar en el botón para seleccionar el archivos de copia de seguridad Paso4. El destino puede ser cualquier carpeta, aunque lo recomendable es que sea la de datos de SQL Server, aunque ese directorio puede ser diferente, pero normalmente estará en la carpeta de instalación de SQL Server.Además de la ubicación del fichero _Data, tendrás que indicar el del fichero _Log. que estan en las opciones Paso5. Una vez que has indicado la ubicación correcta, al pulsar en Aceptar, restaurará la base de datos y saldrá un mensaje indicando si se hizo la restauración de forma correcta.
















