viernes, 15 de junio de 2012

EJERCICIOS (INNER JOIN- LEFT JOIN - RIGHT JOIN)

TABLAS QUE SE UTILIZARON PARA LA EJERCITACION

1 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 aparezcan las oficinas del este que no tienen empleados.



2 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).



3 Listar los datos de cada uno de los empleados, la ciudad y región en donde trabaja.



4 Listar las oficinas con objetivo superior a 600.000 pts indicando para cada una de ellas el nombre de su director.



5 Listar los pedidos superiores a 25.000 pts, incluyendo el nombre del empleado que tomó el pedido y el nombre del cliente que lo solicitó.



6 Hallar los empleados que realizaron su primer pedido el mismo día en que fueron contratados.





7 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.



8 Listar los códigos de los empleados que tienen una línea de pedido superior a 10.000 ptas o que tengan una cuota inferior a 10.000 pts.

Tablas que se utilizaron para la ejercitacion.






 Tabla empleados con los siguientes campos:


numemp: número del empleado
nombre : nombre y apellidos del empleado
edad : edad del empleado
oficina : número de la oficina donde trabaja el empleado, p.ej. Antonio Viguer trabaja en la oficina 12 de Alicante
titulo : el cargo que desempeña el empleado
contrato : fecha en que se contrató al empleado
jefe : número de su jefe inmediato, p.ej. El jefe de Antonio Viguer es José González. Observar que Luis Antonio no tiene jefe, es el director general.
cuota : cuota del empleado, sería el importe mínimo de ventas que debe alcanzar el empleado en el año
ventas : importe de ventas realizadas durante este año



 Tabla oficinas con los siguientes campos:


oficina: código de la oficina
ciudad: ciudad donde está ubicada
region : región a la que pertenece
dir : director de la oficina (su número de empledo) por ejemplo la oficina 12 tiene como director el empleado104 José González.
objetivo : objetivo de ventas que debe alcanzar la oficina
ventas: ventas de la oficina












































 Tabla clientes con los siguientes campos:


numclie: número de cliente
nombre : nombre y apellidos del cliente
repclie : nº del representante asignado al cliente.
Cada cliente tiene un representante asignado (el que figura en repclie) que será el que generalmente le atienda.
limitecredito : límite de crédito del cliente


















































 Tabla productos con los siguientes campos:


idfab: identificativo del fabricante del producto
idproducto : código que utiliza el fabricante para codificar el producto. Observar que aparecen varias líneas con el mismo idproducto (41003), por lo que la clave principal de la tabla deberá ser idfab+idproducto
descripcion: nombre del producto
precio: precio del producto
existencias: nº de unidades del producto que tenemos en almacén.




























































 Tabla pedidos:


codigo : nº secuencial que sirve de clave principal
numpedido: nº de pedido. Observar que un pedido puede tener varias líneas.
fechapedido : fecha del pedido
clie : cliente que efectua el pedido
rep : representante que tramita el pedido
fab: fabricante del producto que se pide
producto : idproducto del producto que se pide.
cant : cantidad que se pide del producto
impo

viernes, 27 de abril de 2012

SubConsulta



Una subconsulta en SQL consiste en utilizar los resultados de una consulta dentro de otra, que se considera la principal.
Esta posibilidad fue la razón original para la palabra “estructurada” en el nombre Lenguaje de Consultas Estructuradas (Structured Query Language, SQL).
Anteriormente hemos utilizado la cláusula WHERE para seleccionar los datos que deseábamos comparando un valor de una columna con una constante, o un grupo de ellas. Si los valores de dichas constantes son desconocidos, normalmente por proceder de la aplicación de funciones a determinadas columnas de la tabla, tendremos que utilizar subconsultas.
Por ejemplo, queremos saber la lista de empleados cuyo salario supere el salario medio. En primer lugar, tendríamos que averiguar el importe del salario medio :


SELECT AVG(salario) AS Salario_Medio FROM empleados;

A continuación, anotarlo en un papel o recordarlo para la siguiente sentencia:

SELECT  dep_no “Nº Empleado”, apellido, salario FROM empleados WHERE salario> 256666.67;


 Sería mucho más eficiente utilizar una subconsulta:

SELECT  dep_no “Nº Empleado”,apellido,salario FROM empleados
                WHERE salario > ( SELECT AVG(salario) FROM empleados );

NOTA: La subconsulta (comando SELECT entre paréntesis) se ejecuta primero y, posteriormente, el
valor extraído es utilizado en la consulta principal.

Valores de retorno de las subconsultas y condiciones de selección

Una subconsulta siempre forma parte de la condición de selección en las cláusulas WHERE o
HAVING.
   El resultado de una subconsulta puede ser un valor simple o más de un valor. Según el retorno de la subconsulta, el operador de comparación que se utilice en la condición de selección del WHERE o HAVING deberá ser del tipo apropiado según la tabla siguiente:
 
Operador comparativo  |      Retorno  de la subconsulta
   De tipo aritmético          |           Valor simple
    De tipo lógico               |           Más de un valor


Condición de selección con operadores aritméticos de comparación.

Se utiliza cuando la subconsulta devuelve un único valor a comparar con una expresión, por lo
general formada a partir de la fila obtenida en la consulta principal.
Si la comparación resulta cierta (TRUE), la condición de selección también lo es. Si la subconsulta no devuelve ninguna fila (NULL),la comparación devuelve también el valor NULL.

NOTA: Operadores_aritméticos de comparación: =,<>,<,>,<=,<=

 Ejemplos.

1. Obtener todos los empleados que tienen el mismo oficio que ‘Alonso’.

     SELECT emp_no AS NºEmpleado, apellido, oficio FROM empleados
            WHERE oficio=(SELECT oficio FROM empleados
             WHERE UCASE(apellido)= 'ALONSO');