Estás en: MySql y SQL : Ejercicios campos relacionados (bases de datos "paises" y "empresa")
Consultas con tablas relacionadas de la base de datos "paises" y de la base de datos "empresa".
Ejercicios con la base de datos "paises"
Listar los paises cuya población supere los 50.000.000 y el continente al que pertenecen.
SELECT pais.pais_nombre, pais.pais_poblacion, continente.continente_nombre FROM pais, continente WHERE (pais.continente = continente.continente_id) AND (pais.pais_poblacion > 50000000)
La misma consulta, pero utilizando alias
SELECT p.pais_nombre, p.pais_poblacion, c.continente_nombre FROM pais AS p, continente AS c WHERE (p.continente = c.continente_id) AND (p.pais_poblacion > 50000000)
Ejercicios con la base de datos "empresa"
Listar las oficinas del este indicando para cada una de ellas su número,ciudad, números y nombres de sus empleados. Hacer una versión en la que aparecen sólo las que tienen empleados, y hacer otra en las que aparezcanlas oficinas del este que no tienen empleados.
----- Versión en la que aparecen sólo las que tienen empleados ----- SELECT oficinas.oficina, oficinas.ciudad, empleados.numemp, empleados.nombre FROM oficinas, empleados WHERE (oficinas.oficina=empleados.oficina) AND (empleados.numemp IS NOT NULL) ----- Versión en la que aparecen las oficinas del este que no tienen empleados ----- SELECT oficinas.oficina, oficinas.ciudad, empleados.numemp, empleados.nombre FROM oficinas, empleados WHERE (oficinas.oficina=empleados.oficina) AND oficinas.region='este'
Listar los pedidos mostrando su número, importe, nombre del cliente y el límite de crédito del cliente correspondiente (todos los pedidos tienen cliente y representante). Hacer ejercicio sin y con representante
..............SIN REPRESENTANTE.............. SELECT pedidos.numpedido, pedidos.importe, clientes.nombre, pedidos.rep, clientes.limitecredito FROM pedidos, clientes, empleados WHERE (pedidos.clie=clientes.numclie) AND (clientes.repclie=empleados.numemp) ..............CON REPRESENTANTE............... SELECT pedidos.numpedido, pedidos.importe, clientes.nombre, pedidos.rep, clientes.limitecredito FROM pedidos, clientes, empleados WHERE (pedidos.clie=clientes.numclie) AND (clientes.repclie=empleados.numemp) ////// Las relaciones siempre van en el sentido de 1 a varios, es decir, de la clave primaria de una tabla, a la clave foranea
Listar los datos de cada uno de los empleados, la ciudad y región en donde trabaja.
SELECT empleados.numemp, empleados.nombre, empleados.edad, empleados.oficina, empleados.titulo, empleados.contrato, empleados.jefe, empleados.cuota, empleados.ventas, oficinas.ciudad, oficinas.region ó SELECT empleados.*, oficinas.region, oficinas.ciudad FROM empleados, oficinas WHERE empleados.oficina=oficinas.oficina
Listar las oficinas con objetivo superior a 400 € indicando para cada una de ellas el nombre de su director
SELECT of.oficina, of.ciudad, of.region, of.dir, of.objetivo, of.ventas, emp.nombre FROM oficinas AS of, empleados AS emp WHERE (of.oficina = emp.oficina) AND of.objetivo > 400
Listar los pedidos superiores a 150€, incluyendo el nombre del empleado que tomó el pedido y el nombre del cliente que lo solicitó.
SELECT pedidos.numpedido, pedidos.importe, empleados.nombre, clientes.nombre FROM pedidos, clientes, empleados WHERE (clientes.numclie=pedidos.clie) AND (empleados.numemp=pedidos.rep) AND (pedidos.importe>150)
Hallar los empleados que realizaron su primer pedido el mismo día en que fueron contratados. Resultado: Ana bustamante
SELECT empleados.* FROM empleados, clientes, pedidos WHERE pedidos.rep= empleados.numemp AND fechapedido=contrato AND (empleados.nombre='Ana Bustamente')
Listar los empleados con una cuota superior a la de su jefe; para cada empleado sacar sus datos y el número, nombre y cuota de su jefe
SELECT e.*, j.numemp AS num_jefe, j.nombre AS nombre_jefe, j.cuota AS cuota_jefe FROM empleados AS e, empleados AS j -> Hacemos como duplicado de los datos de la tabla. Uno para los empleados y otro para los jefes WHERE e.jefe=j.numemp AND e.cuota>j.cuota
Listar los códigos de los empleados que tienen una línea de pedido superior a 60 € o que tengan una cuota inferior a 60 €
SELECT NUMEMP FROM empleados AS e, pedidos AS p WHERE (p.rep=e.numemp) AND (importe>60 OR cuota<60)