Está en la página 1de 5

Con la Base de Datos creada realice las siguientes

consultas:
Ejercicio 1

SELECT numemp, nombre, ciudad,

FROM empleados INNER JOIN pedidos ON pedidos. numemp = empleados. numemp

WHERE region = 'este'

SELECT oficinas.oficina, ciudad, numemp, nombre


FROM oficinas LEFT JOIN empleados ON oficinas.oficina = empleados.oficina
WHERE region = 'este'

SELECT oficinas.oficina, ciudad, numemp, nombre


FROM empleados RIGHT JOIN oficinas ON productos. numemp = empleados. numemp
WHERE region = 'este'

Como la columna de emparejamiento oficinas.oficina es clave principal en la tabla oficinas, es


mejor utilizar el JOIN Emparejamos las dos tablas por el campo oficina. Las oficinas que no
tengan empleados no salen (es un INNER)

Como queremos sólo las oficinas del este añadimos la cláusula WHERE con la condición El valor
este debe ir entre comillas

en la lista de selección la columna oficina está cualificada (su nombre está precedido del
nombre de la tabla), es necesario cualificarla porque en las dos tablas existe una columna
llamada oficina y el sistema no sabría cuál de las dos escoger. Si queremos que también
aparezcan las oficinas que no tienen empleados cambiamos INNER por LEFT (queremos todas las
oficinas y la tabla oficinas está a la izquierda de la palabra JOIN).

si en la lista de selección ponemos empleados.oficina en vez de oficinas.oficina, en las filas de


oficinas que no tienen empleados el número de oficina aparece nulo. Esta SELECT es equivalente
a la anterior pero hemos cambiado LEFT por RIGHT porque ahora la tabla oficinas está a la
derecha de la palabra JOIN.

Ejercicio 2
SELECT numpedido, cuota,ventas, empleados.nombre AS cliente, numpedido
FROM empleados INNER JOIN pedidos

ON pedidos.numemp = empleados.numemp

En este ejercicio no pueden haber pedidos sin cliente, y lo que nos interesa son los
pedidos, luego tampoco tienen que aparecer los clientes que no tienen pedidos, por lo
tanto utilizamos un INNER JOIN.

Ejercicio 3
SELECT empleados.*, ciudad, region
FROM empleados LEFT JOIN pedidos
ON empleados.numemp =
pedidos.numemp

hemos utilizado LEFT JOIN para que


también salgan los empleados que no
tienen oficina asignada. Como queremos
todos los datos del empleado utilizamos
empleados.* para acortar.

Ejercicio 4
SELECT empleados.*, nombre AS
director
FROM empleados RIGHT JOIN pedios
ON empleados.numemp =
pedidos.numemp
WHERE ventas > 6000

Nos interesan las oficinas con objetivo


superior a 600.000pts. luego nos
tenemos que asegurar que salgan todas
incluso si no tienen director asignado
por eso utilizamos RIGHT JOIN.En los
valores numéricos no utilizar el punto
para separar los miles (lo consideraría
coma decimal y entendería 600 en vez
de 6000…).
Ejercicio 5
SELECT numpedido,
idproductos,empleados.nombre AS
representante, clientes.nombre AS
cliente
FROM (pedidos INNER JOIN
empleados as clientes ON
pedidos.idpedidos =
clientes.idpedidos) INNER JOIN
empleados ON pedidos.numep =
empleados.numemp
WHERE cuota > 25000

En este ejercicio no pueden haber


pedidos sin representante ni cliente, y lo
que nos interesa son los pedidos, luego
tampoco tienen que aparecer los
representantes que no tienen pedidos ni
los clientes que no tienen pedidos, por
lo tanto utilizamos un INNER JOIN.

Primero añadimos a cada línea de


pedido los datos del cliente
corespondiente (con el primer INNER) y
a cada fila resultante añadimos los
datos del representante
correspondiente.el representante que
nos interesa es el que ha realizado el
pedido y ese dato lo tenemos en el
campo rep de pedidos por eso la
condición de emparejamiento es
pedidos.rep = empleados.rep.Si
hubiesemos querido el nombre del
representante asignado al cliente, la
condición hubiera sido clientes.repclie =
empleados.numemp.
Ejercicio 6
SELECT empleados.*
FROM empleados INNER JOIN
Pedidos ON pedidos.numemp =
empleados.numemp
WHERE fechacontrato =< ‘1986’

Los representantes que buscamos tienen


un pedido con la misma fecha que la de su
contrato, tenemos que añadir a los
pedidos los datos del representante
correspondiente para poder comparar los
dos campos.
Ejercicio 7
SELECT empleados.*, clientes.numemp AS num_jefe, clientes.nombre AS nombre_jefe,
empleados.cuota AS cuota_jefe
FROM empleados INNER JOIN pedidos ON empleados.numemp = clientes.numemp
WHERE empleados.cuota > 6000

Obtener una lista de productos por fabricante.

Para ello escogeremos como origen de datos (FROM) la tabla productos y lo ordenaremos


(ORDER BY) por el idfab, que es el campo que indica el fabricante.

SELECT idfab, descripcion, idproducto, productos.precio

FROM productos

ORDER BY idfab, descripcion;

Resultado:

Idfab Descripcion Idproducto precio


aci arandela 41001 NULL
aci art t3 41003 NULL
aci art t4 41004 NULL
aci bisagra 41002 NULL
aci extractor 4100y NULL
aci junta 4100x NULL
aci mont 4100z NULL

Listar las oficinas de manera que las oficinas de


mayores ventas aparezcan en primer lugar.

SELECT ciudad, region, ventas

FROM oficinas

ORDER BY ventas DESC;

Resultado:

Ciudad Region Ventas


Pamplona norte 200000,00
Badajoz oeste 84400,00
Alicante este 73500,00
Valencia este 69300,00
Castellon este 36800,00
A Coruña oeste 18600,00
Aranjuez centro 15000,00
Valencia este 2100,00
Elx NULL 0,00
Móstoles Centro 0,00
Valencia este 0,00
Valencia NULL NULL
Madrid centro NULL
pamplona norte NULL

También podría gustarte