/* LAB03 - CONSULTAS SOBRE BASES DE DATOS */
-- EN LA BD PRUEBA
-- Mostrar el nombre y apellido de los empleados --
USE PRUEBA
GO
SELECT * FROM EMPLEADOS;
-- Equivalente al operador de Proyecci?n (PI) en AR
SELECT NOMBRE, APELLIDO
FROM EMPLEADOS
-- Muestre apellido y nombre de los empleados ordenado alfab?ticamente
SELECT NOMBRE, APELLIDO
FROM EMPLEADOS
ORDER BY APELLIDO, NOMBRE
-- Muestre el apellido y nombre de los empleados que tienen un sueldo mayor a $1000
-- ordenado ascendentemente por sueldo
SELECT APELLIDO,NOMBRE,SUELDO
FROM EMPLEADOS
WHERE SUELDO > 1000
ORDER BY SUELDO
select * from EMPLEADOS
-- Utilizar operador LIKE.
-- Mostrar c?digo, apellido y nombre y fecha de ingreso de los empleados cuyo
apellido
-- empiece con las letras AN.
SELECT CodEmple, apellido, nombre, fechaingreso
from EMPLEADOS
where apellido LIKE 'AN%'
-- Mostrar el apellido, nombre y sueldo de los empleados cuyo apellido empieza con
-- 'C'
SELECT CodEmple, apellido, nombre, fechaingreso
from EMPLEADOS
where apellido LIKE 'C%'
-- operador between
-- Mostrar el apellido, nombre y sueldo de los empleados cuyos sueldos est?n entre
-- 800 a 1200
SELECT apellido, nombre, sueldo
from EMPLEADOS
where sueldo BETWEEN 800 and 1200
SELECT apellido, nombre, sueldo
from EMPLEADOS
where sueldo >= 800 and sueldo <= 1200
select * from departamentos
select * from cargos
USE PEDIDOS
GO
-- Probar la condici?n IS NULL
select * from clientes
-- Muestre los clientes que tienen un celular con valor nulo
select NOMBRECIA
from CLIENTES
where CELULAR is null
-- Muestre a las compa??as clientes que son SUPERMERCADOS (su nombre incluye la
-- palabra SUPERMERCADO. Despliegue en orden alfab?tico.
select * from clientes
select NOMBRECIA
FROM CLIENTES
WHERE NOMBRECIA LIKE 'SUPERMERCADO%'
ORDER BY NOMBRECIA
-- Muestre la lista de los proveedores (todos los campos), que son de la ciudad de
-- Quito
ALTER TABLE PROVEEDORES ADD CIUDAD CHAR(30)
SELECT * FROM PROVEEDORES
UPDATE PROVEEDORES
SET CIUDAD = 'QUITO'
WHERE PROVEEDORID < 50
UPDATE PROVEEDORES
SET CIUDAD = 'GUAYAQUIL'
WHERE PROVEEDORID > 50
SELECT * FROM PROVEEDORES
WHERE CIUDAD = 'QUITO'
-- JUNTURA ENTRE TABLAS
-- JOIN: OPERADOR DE JUNTURA EN SQL
-- Muestre el c?digo, el nombre del producto, el c?digo de la categor?a
-- y el nombre de la categor?a
select * from productos
select * from CATEGORIAS
select productoid, proveedorid, P.categoriaid, descripcion, preciounit, nombrecat
from CATEGORIAS C join PRODUCTOS P
ON (C.CATEGORIAID = P.CATEGORIAID)
ORDER BY DESCRIPCION
-- Muestre el c?digo del producto, su descripci?n, su precio unitario y el nombre
-- de su proveedor
SELECT productoid, descripcion, preciounit, nombreprov
from PRODUCTOS P join PROVEEDORES Pv
on (P.PROVEEDORID = Pv.PROVEEDORID)
-- Muestre el c?digo del producto, su descripci?n, su precio unitario, el nombre
-- de la categor?a a la que pertenece y el nombre de su proveedor.
SELECT productoid, descripcion, preciounit, nombrecat, nombreprov
from PRODUCTOS P join CATEGORIAS C
on (P.CATEGORIAID = C.CATEGORIAID)
join PROVEEDORES Pv
on (P.PROVEEDORID = Pv.PROVEEDORID)
-- Muestre el n?mero de orden, fecha de la orden, nombre de la compa??a cliente
-- apellido y nombre del empleado que atendi? la orden
select ORDENID, fechaorden, nombrecia, apellido, nombre
from ORDENES O JOIN CLIENTES C
ON (O.CLIENTEID = C.CLIENTEID)
JOIN EMPLEADOS E
ON (O.EMPLEADOID = E.EMPLEADOID)
ORDER BY ORDENID
select ORDENID, fechaorden AS 'Fecha de orden', nombrecia as 'CLIENTE',
apellido AS 'APELLIDO EMPLEADO', nombre AS 'NOMBRE EMPLEADO'
from ORDENES O JOIN CLIENTES C
ON (O.CLIENTEID = C.CLIENTEID)
JOIN EMPLEADOS E
ON (O.EMPLEADOID = E.EMPLEADOID)
ORDER BY ORDENID
-- Mostrar las ?rdenes de pedidos realizados por el cliente SUPERMERCADO DORADO.
select ORDENID, fechaorden, nombrecia, apellido, nombre
from ORDENES O JOIN CLIENTES C
ON (O.CLIENTEID = C.CLIENTEID)
JOIN EMPLEADOS E
ON (O.EMPLEADOID = E.EMPLEADOID)
WHERE NOMBRECIA = 'SUPERMERCADO DORADO'
ORDER BY ORDENID
select ORDENID, fechaorden, apellido, nombre
from ORDENES O JOIN CLIENTES C
ON (O.CLIENTEID = C.CLIENTEID)
JOIN EMPLEADOS E
ON (O.EMPLEADOID = E.EMPLEADOID)
WHERE NOMBRECIA = 'SUPERMERCADO DORADO'
ORDER BY ORDENID
--- En relaciones recursivas
select * from EMPLEADOS
-- Mostrar el apellido y nombre de los empleados y el apellido y nombre
-- de su jefe inmediato.
select E.apellido as 'Apellido Emp.', E.nombre as 'Nombre Emp.',
J.apellido as 'Apellido Jefe', J.nombre as 'Nombre Jefe'
from EMPLEADOS E join EMPLEADOS J
on (E.REPORTA_A = J.EMPLEADOID)
-- Muestre el apellido y nombre del empleado que es el Jefe m?ximo (que
-- no tiene a un jefe inmediato)
select apellido, nombre
from empleados
where REPORTA_A is NULL
-- En la BD PRUEBA
USE PRUEBA
GO
select * from departamentos
--1. Muestre a los empleados (apellido y nombre) que tienen el cargo ANALISTA.
select apellido, nombre, nomcargo
from empleados e join cargos c
on e.cargo = c.CodCargo
where nomcargo = 'ANALISTA'
--2. Muestre a los empleados que tienen el cargo de GERENTE y que ganan m?s
-- de 1200.
select apellido, nombre
from empleados e join cargos c
on e.cargo = c.CodCargo
where nomcargo = 'GERENTE' and sueldo > 1200
--3. Muestre el apellido y nombre de los empleados, el nombre del cargo que
-- ocupan y el nombre del departamento donde trabajan
select apellido, nombre, nomcargo, nomDepar
from empleados e join cargos c
on e.cargo = c.CodCargo
join departamentos d
on e.departamento = d.CodDepar
--4. Muestre a los empleados que trabajan en el departamento de COMERCIALIZACION
select apellido, nombre, nomDepar
from empleados e join departamentos d
on e.departamento = d.CodDepar
where nomDepar = 'COMERCIALIZACION'
--5. Muestre a los empleados que tienen un sueldo menor al sueldo m?ximo del
-- cargo que desempe?an
select apellido, nombre, sueldo, nomcargo, sueldomax
from empleados e join cargos c
on (e.cargo = c.CodCargo)
where sueldo < sueldomax
-- OPERACIONES CON VARIAS TABLAS USANDO CONDICION WHERE
--1. Muestre a los empleados (apellido y nombre) que tienen el cargo ANALISTA.
select apellido, nombre, nomcargo
from empleados e join cargos c
on e.cargo = c.CodCargo
where nomcargo = 'ANALISTA'
select apellido, nombre, nomcargo
from empleados e, cargos c
where e.cargo = c.CodCargo
and nomcargo = 'ANALISTA'
--2. Muestre a los empleados que tienen el cargo de GERENTE y que ganan m?s
-- de 1200.
select apellido, nombre
from empleados e join cargos c
on e.cargo = c.CodCargo
where nomcargo = 'GERENTE' and sueldo > 1200
select apellido, nombre
from empleados e, cargos c
where e.cargo = c.CodCargo
and nomcargo = 'GERENTE' and sueldo > 1200
USE PEDIDOS
GO
-- Utilizando condiciones WHERE realice las siguientes consultas
-- Muestre el n?mero de orden, el nombre del cliente y el apellido y nombre
-- del empleado que atendi? la orden
select * from ordenes
select ordenid, nombrecia, apellido, nombre
from ordenes, clientes, empleados
where ordenes.clienteid = clientes.clienteid
and ordenes.empleadoid = empleados.empleadoid
order by ordenid
--- USO DE FUNCIONES
select * from empleados
-- Concatenar cadenas (operador +)
select nombre, apellido
from empleados
select nombre + apellido as 'Nombre del empleado'
from empleados
select rtrim(nombre) + ' ' + apellido as 'Nombre del empleado'
from empleados
select * from ordenes
select ordenid, nombrecia, cast (fechaorden as char(12)) as 'Fecha de orden'
from ordenes, clientes
where ordenes.clienteid = clientes.clienteid