guia evaluada sql

Download Guia Evaluada SQL

If you can't read please download the document

Upload: api-3735749

Post on 07-Jun-2015

2.223 views

Category:

Documents


4 download

DESCRIPTION

Guía Prometida para hoy, suerte

TRANSCRIPT

Tcnicas de Programacin

Inst. Profesional Providencia

INSTITUTO PROFESIONAL PROVIDENCIA

CARRERA: INGENIERIA EN INFORMATICAGua Evaluada de SQL

Curso: Tcnicas de Programacin Profesor: Pedro Antonio Gonzlez T.

1.- Sintaxis SQL 1.1.- Consultas de Seleccin (SELECT)Bases de datos-SQL-Sentencias SQL-Consultas de Seleccin Las consultas de seleccin se utilizan para indicar al motor de datos que devuelva informacin de las bases de datos, esta informacin es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset. Este conjunto de registros puede ser modificable.

Consultas bsicasLa sintaxis bsica de una consulta de seleccin es la siguiente:

SELECTCampos

FROMTabla En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos, por ejemplo:

SELECTNombre, Telfono

FROMClientes Esta sentencia devuelve un conjunto de resultados con el campo nombre y telfono de la tabla clientes.

Devolver LiteralesEn determinadas ocasiones nos puede interesar incluir una columna con un texto fijo en una consulta de seleccin, por ejemplo, supongamos que tenemos una tabla de empleados y deseamos recuperar las tarifas semanales de los electricistas, podramos realizar la siguiente consulta:

SELECTEmpleados.Nombre, 'Tarifa semanal: ', Empleados.TarifaHora * 40

FROMEmpleados

WHEREEmpleados.Cargo = 'Electricista'

______________________________________________________________________

1

Tcnicas de Programacin

Inst. Profesional Providencia

Ordenar los registrosAdicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la clusula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar. Ejemplo:

SELECTCodigoPostal, Nombre, Telefono

FROMClientes

ORDER BYNombre Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de la tabla Clientes ordenados por el campo Nombre. Se pueden ordenar los registros por mas de un campo, como por ejemplo:

SELECTCodigoPostal, Nombre, Telefono

FROMClientes

ORDER BYCodigoPostal, Nombre Incluso se puede especificar el orden de los registros: ascendente mediante la clusula (ASC - se toma este valor por defecto) descendente (DESC)

SELECTCodigoPostal, Nombre, Telefono

FROMClientes

ORDER BYCodigoPostal DESC , Nombre ASC

Uso de Indices de las tablasSi deseamos que la sentecia SQL utilice un ndice para mostrar los resultados se puede utilizar la palabra reservada INDEX de la siguiente forma: SELECT ... FROM Tabla (INDEX=Indice) ... Normalmente los motores de las bases de datos deciden que indice se debe utilizar para la consulta, para ello utilizan criterios de rendimiento y sobre todo los campos de bsqueda especificados en la clusula WHERE. Si se desea forzar a no utilizar ningn ndice utilizaremos la siguiente sintaxis: SELECT ... FROM Tabla (INDEX=0) ...

Consultas con PredicadoEl predicado se incluye entre la clusula y el primer nombre del campo a recuperar, los posibles predicados son: Predicado Descripcin

______________________________________________________________________

2

Tcnicas de Programacin

Inst. Profesional Providencia

ALL TOP DISTINCT DISTINCTOW

Devuelve todos los campos de la tabla Devuelve un determinado nmero de registros de la tabla Omite los registros cuyos campos seleccionados coincidan totalmente Omite los registros duplicados basandose en la totalidad del registro y no slo en los campos seleccionados.

ALL Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de datos selecciona todos los registros que cumplen las condiciones de la instruccin SQL y devuelve todos y cada uno de sus campos. No es conveniente abusar de este predicado ya que obligamos al motor de la base de datos a analizar la estructura de la tabla para averiguar los campos que contiene, es mucho ms rpido indicar el listado de campos deseados.

SELECT ALL FROMEmpleados

SELECT * FROMEmpleados TOP Devuelve un cierto nmero de registros que entran entre al principio o al final de un rango especificado por una clusula ORDER BY. Supongamos que queremos recuperar los nombres de los 25 primeros estudiantes del curso 1994:

SELECT TOP 25Nombre, Apellido

FROMEstudiantes

ORDER BYNota DESC Si no se incluye la clusula ORDER BY, la consulta devolver un conjunto arbitrario de 25 registros de la tabla de Estudiantes. El predicado TOP no elige entre valores iguales. En el ejemplo anterior, si la nota media nmero 25 y la 26 son iguales, la consulta devolver 26 registros. Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje de registros que caen al principio o al final de un rango especificado por la clusula ORDER BY. Supongamos que en lugar de los 25 primeros estudiantes deseamos el 10 por ciento del curso:

SELECT TOP 10 PERCENTNombre, Apellido

FROMEstudiantes

ORDER BYNota DESC El valor que va a continuacin de TOP debe ser un entero sin signo. TOP no afecta a la posible actualizacin de la consulta.

______________________________________________________________________

3

Tcnicas de ProgramacinDISTINCT

Inst. Profesional Providencia

Omite los registros que contienen datos duplicados en los campos seleccionados. Para que los valores de cada campo listado en la instruccin SELECT se incluyan en la consulta deben ser nicos. Por ejemplo, varios empleados listados en la tabla Empleados pueden tener el mismo apellido. Si dos registros contienen Lpez en el campo Apellido, la siguiente instruccin SQL devuelve un nico registro:

SELECT DISTINCTApellido

FROMEmpleados Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos indicados en la clusula SELECT posean un contenido diferente. El resultado de una consulta que utiliza DISTINCT no es actualizable y no refleja los cambios subsiguientes realizados por otros usuarios. DISTINCTROW Este predicado no es compatible con ANSI. Que yo sepa a da de hoy slo funciona con ACCESS. Devuelve los registros diferentes de una tabla; a diferencia del predicado anterior que slo se fijaba en el contenido de los campos seleccionados, ste lo hace en el contenido del registro completo independientemente de los campos indicados en la clusula SELECT.

SELECT DISTINCTROWApellido

FROM EmpleadosSi la tabla empleados contiene dos registros: Antonio Lpez y Marta Lpez el ejemplo del predicado DISTINCT devuelve un nico registro con el valor Lpez en el campo Apellido ya que busca no duplicados en dicho campo. Este ltimo ejemplo devuelve dos registros con el valor Lpez en el apellido ya que se buscan no duplicados en el registro completo. ALIAS En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto, otras veces por simple capricho o porque estamos recuperando datos de diferentes tablas y resultan tener un campo con igual nombre. Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto) se llame Empleado. En este caso procederamos de la siguiente forma:

SELECT DISTINCTROW Apellido AS Empleado FROM EmpleadosAS no es una palabra reservada de ANSI, existen diferentes sistemas de asignar los alias en funcin del motor de bases de datos. En ORACLE para asignar un alias a un campo hay que hacerlo de la siguiente forma:

SELECTApellido AS "Empleado" FROM Empleados Tambin podemos asignar alias a las tablas dentro de la consulta de seleccin, en esta caso hay que tener en cuenta que en todas las referencias que deseemos hacer a dicha tabla se ha de utilizar el alias en lugar del

______________________________________________________________________

4

Tcnicas de Programacin

Inst. Profesional Providencia

nombre. Esta tcnica ser de gran utilidad ms adelante cuando se estudien las vinculaciones entre tablas. Por ejemplo:

SELECTApellido AS Empleado

FROMEmpleados AS Trabajadores Para asignar alias a las tablas en ORACLE y SQL-SERVER los alias se asignan escribiendo el nombre de la tabla, dejando un espacio en blanco y escribiendo el Alias (se asignan dentro de la clusula FROM).

SELECTTrabajadores.Apellido (1) AS Empleado

FROMEmpleados Trabajadores(1)

Esta nomenclatura [Tabla].[Campo] se debe utilizar cuando se est recuperando un campo cuyo nombre se repite en varias de las tablas que se utilizan en la sentencia. No obstante cuando en la sentencia se emplean varias tablas es aconsejable utilizar esta nomenclatura para evitar el trabajo que supone al motor de datos averiguar en que tabla est cada uno de los campos indicados en la clusua SELECT. Recuperar Informacin de una base de Datos Externa Para concluir este captulo se debe hacer referencia a la recuperacin de registros de bases de datos externas. Es ocasiones es necesario la recuperacin de informacin que se encuentra contenida en una tabla que no se encuentra en la base de datos que ejecutar la consulta o que en ese momento no se encuentra abierta, esta situacin la podemos salvar con la palabra reservada IN de la siguiente forma:

SELECTApellido AS Empleado

FROMEmpleados IN'c: \databases\gestion.mdb' En donde c: \databases\gestion.mdb es la base de datos que contiene la tabla Empleados. Esta tcnica es muy sencilla y comn en bases de datos de tipo ACCESS en otros sistemas como SQL-SERVER u ORACLE, la cosa es ms complicada la tener que existir relaciones de confianza entre los servidores o al ser necesaria la vinculacin entre las bases de datos. Este ejemplo recupera la informacin de una base de datos de SQLSERVER ubicada en otro servidor (se da por supuesto que los servidores estn lincados):

SELECTApellido

FROMServidor1.BaseDatos1.dbo.Empleados

______________________________________________________________________

5

Tcnicas de Programacin 1.2.- Consultas de Accin

Inst. Profesional Providencia

Bases de datos-SQL-Sentencias SQL-Consultas de Accin Las consultas de accin son aquellas que no devuelven ningn registro, son las encargadas de acciones como aadir y borrar y modificar registros. Tanto las sentencias de actualizacin como las de borrado desencadern (segn el motor de datos) las actualizaciones en cascada, borrados en cascada, restricciones y valores por defecto definidos para los diferentes campos o tablas afectadas por la consulta. DELETE Crea una consulta de eliminacin que elimina los registros de una o ms de las tablas listadas en la clusula FROM que satisfagan la clusula WHERE. Esta consulta elimina los registros completos, no es posible eliminar el contenido de algn campo en concreto. Su sintaxis es: DELETE FROM Tabla WHERE criterio Una vez que se han eliminado los registros utilizando una consulta de borrado, no puede deshacer la operacin. Si desea saber qu registros se eliminarn, primero examine los resultados de una consulta de seleccin que utilice el mismo criterio y despus ejecute la consulta de borrado. Mantenga copias de seguridad de sus datos en todo momento. Si elimina los registros equivocados podr recuperarlos desde las copias de seguridad.

DELETE FROM Empleados WHERE Cargo = 'Vendedor' INSERT INTO Agrega un registro en una tabla. Se la conoce como una consulta de datos aadidos. Esta consulta puede ser de dos tipo: Insertar un nico registro Insertar en una tabla los registros contenidos en otra tabla. Para insertar un nico Registro: En este caso la sintaxis es la siguiente: INSERT INTO Tabla (campo1, campo2, ..., campoN) VALUES (valor1, valor2, ..., valorN) Esta consulta graba en el campo1 el valor1, en el campo2 y valor2 y as sucesivamente. Para seleccionar registros e insertarlos en una tabla nueva En este caso la sintaxis es la siguiente: SELECT campo1, campo2, ..., campoN INTO nuevatabla FROM tablaorigen [WHERE criterios] Se pueden utilizar las consultas de creacin de tabla para archivar registros, hacer copias de seguridad de las tablas o hacer copias para exportar a otra base de datos o utilizar en informes que muestren los datos de un periodo de tiempo concreto. Por ejemplo, se podra crear un informe de Ventas mensuales por regin ejecutando la misma consulta de creacin de tabla cada mes. Para insertar Registros de otra Tabla: En este caso la sintaxis es: INSERT INTO Tabla [IN base_externa] (campo1, campo2, , campoN) SELECT TablaOrigen.campo1, TablaOrigen.campo2,,TablaOrigen.campoN FROM Tabla Origen En este caso se seleccionarn los campos 1,2,..., n de la tabla origen y se grabarn en los campos 1,2,.., n de la Tabla. La condicin SELECT puede incluir la clusula WHERE para filtrar los registros a copiar. Si Tabla y Tabla Origen poseen la misma estructura podemos simplificar la sintaxis a:

______________________________________________________________________

6

Tcnicas de Programacin

Inst. Profesional Providencia

INSERT INTO Tabla SELECT Tabla Origen.* FROM Tabla Origen De esta forma los campos de Tabla Origen se grabarn en Tabla, para realizar esta operacin es necesario que todos los campos de Tabla Origen estn contenidos con igual nombre en Tabla. Con otras palabras que Tabla posea todos los campos de Tabla Origen (igual nombre e igual tipo). En este tipo de consulta hay que tener especial atencin con los campos contadores o autonumricos puesto que al insertar un valor en un campo de este tipo se escribe el valor que contenga su campo homlogo en la tabla origen, no incrementndose como le corresponde. Se puede utilizar la instruccin INSERT INTO para agregar un registro nico a una tabla, utilizando la sintaxis de la consulta de adicin de registro nico tal y como se mostr anteriormente. En este caso, su cdigo especifica el nombre y el valor de cada campo del registro. Debe especificar cada uno de los campos del registro al que se le va a asignar un valor as como el valor para dicho campo. Cuando no se especifica dicho campo, se inserta el valor predeterminado o Null. Los registros se agregan al final de la tabla. Tambin se puede utilizar INSERT INTO para agregar un conjunto de registros pertenecientes a otra tabla o consulta utilizando la clusula SELECT... FROM como se mostr anteriormente en la sintaxis de la consulta de adicin de mltiples registros. En este caso la clusula SELECT especifica los campos que se van a agregar en la tabla destino especificada. La tabla destino u origen puede especificar una tabla o una consulta. Si la tabla destino contiene una clave principal, hay que asegurarse que es nica, y con valores no nulos; si no es as, no se agregarn los registros. Si se agregan registros a una tabla con un campo Contador, no se debe incluir el campo Contador en la consulta. Se puede emplear la clusula IN para agregar registros a una tabla en otra base de datos. Se pueden averiguar los registros que se agregarn en la consulta ejecutando primero una consulta de seleccin que utilice el mismo criterio de seleccin y ver el resultado. Una consulta de adicin copia los registros de una o ms tablas en otra. Las tablas que contienen los registros que se van a agregar no se vern afectadas por la consulta de adicin. En lugar de agregar registros existentes en otra tabla, se puede especificar los valores de cada campo en un nuevo registro utilizando la clusula VALUES. Si se omite la lista de campos, la clusula VALUES debe incluir un valor para cada campo de la tabla, de otra forma fallar INSERT. Ejemplos INSERT INTO Clientes SELECT ClientesViejos.* FROM ClientesNuevos SELECT Empleados.* INTO Programadores FROM Empleados WHERE Categoria = 'Programador' Esta consulta crea una tabla nueva llamada programadores con igual estructura que la tabla empleado y copia aquellos registros cuyo campo categoria se programador

INSERT INTO Empleados (Nombre, Apellido, Cargo) VALUES ( 'Luis', 'Snchez', 'Becario' )

______________________________________________________________________

7

Tcnicas de Programacin

Inst. Profesional Providencia

INSERT INTO Empleados SELECT Vendedores.* FROM Vendedores WHERE Provincia = 'Madrid' UPDATE Crea una consulta de actualizacin que cambia los valores de los campos de una tabla especificada basndose en un criterio especfico. Su sintaxis es: UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, CampoN=ValorN WHERE Criterio UPDATE es especialmente til cuando se desea cambiar un gran nmero de registros o cuando stos se encuentran en mltiples tablas. Puede cambiar varios campos a la vez. El ejemplo siguiente incrementa los valores Cantidad pedidos en un 10 por ciento y los valores Transporte en un 3 por ciento para aquellos que se hayan enviado al Reino Unido.:

UPDATE Pedidos SET Pedido = Pedidos * 1.1, Transporte = Transporte * 1.03 WHERE PaisEnvo = 'ES' UPDATE no genera ningn resultado. Para saber qu registros se van a cambiar, hay que examinar primero el resultado de una consulta de seleccin que utilice el mismo criterio y despus ejecutar la consulta de actualizacin.

UPDATE Empleados SET Grado = 5 WHERE Grado = 2

UPDATE Productos SET Precio = Precio * 1.1 WHERE Proveedor = 8 AND Familia = 3 Si en una consulta de actualizacin suprimimos la clusula WHERE todos los registros de la tabla sealada sern actualizados.

UPDATE Empleados SET Salario = Salario * 1.1

______________________________________________________________________

8

Tcnicas de Programacin 2.- Ejercicios

Inst. Profesional Providencia

Ejercicio 1. Dadas las siguientes tablas relacionales realizar en SQL las consultas que se piden: Empleado (#num_emp, nombre, fecha_nacimiento, fecha_ingreso, ext_telf, salario, comision, num_hijos, num_dpto) Departamento (#num_dpto, nombre, presupuesto, num_dpto_depende, num_emp_director, tipo, num_centro) Centro (#num_centro, nombre, direcci.on) # Es la llave Nota: En la tabla Departamento, tipo s.olo puede tomar dos valores ('fijo' o 'provisional') e indica si es director es fijo o provisional 1. Obtener el salario y nombre de los empleados sin hijos por orden decreciente de salario y por orden alfabtico dentro de salario. 2. Para los empleados del departamento 112 hallar el nombre y el salario total de cada uno (salario ms comisin), por orden de salario total decreciente y por orden alfabtico dentro de salario total. 3. Hallar cuntos departamentos hay y el presupuesto anual medio de ellos, para los departamentos que tienen director provisional. 4. Para cada extensin telefnica y para cada departamento hallar cuantos empleados la usan y el salario medio de stos. 5. Hallar si hay algn departamento en la tabla Departamento cuyo centro de trabajo no exista en la tabla Centro. 6. Para todos los departamentos que no sean de Direccin ni de Sectores, hallar el nmero de departamento y sus extensiones telefnicas, por orden creciente de departamento y, dentro de ste, por nmero de extensin creciente. 7. Hallar por orden alfabtico los nombres de los empleados cuyo director es Marcos Prez, bien como director fijo o bien como provisional, indicando cul es el caso para cada uno de ellos.

______________________________________________________________________

9

Tcnicas de Programacin Considerar las siguientes tablas: EMPLEADO: SUCURSAL: CUENTA: CLIENTE: TITULAR: CAJERO: OPERACIN:

Inst. Profesional Providencia

( RUTEmp, NomEmp, SexEmp, FecNac, FecAlt, SalEmp, CodSuc, Dir ) ( CodSuc, DirSuc, TelSuc ) ( NumCta, FecApe, CodSuc ) ( RUTCli, NomCli, DirCli, TelCli ) ( NumCta, RUTCli, NumOrd ) ( CodCaj, TipCaj, CodSuc ) ( CodCaj, FecOpe, HorOpe, TipOpe, DesOpe, ImpOpe, NumCta )

Realizar las siguientes consultas: 1. 2. 3. 4. * * * * 5. 6. 7. 8. 9. # 10. Nmero de todas las cuentas corrientes ( NumCta ) de la sucursal nmero 2 ordenadas por fecha de apertura ( FecApe ). El nmero de todas las cuentas corrientes del cliente con RUT 44444444 y el orden de titularidad. El nmero de todas las cuentas corrientes del cliente que se llama Pedro del Valle y el orden de titularidad. El RUT y nombre de todos los clientes que tienen cuenta en la sucursal nmero 4, ordenado por nombre. El saldo de la cuenta nmero 6. El nmero y saldo de todas las cuentas de la sucursal nmero 4. Listado de clientes ( RUT y nombre ) con el saldo total ( suma de saldos ) de todas sus cuentas corrientes, ordenado por nombre. Todas las sucursales ( nmero ) y su saldo total ( suma de los saldo de todas sus cuentas ) ordenado descendentemente por el saldo. Todas las fechas que hay operaciones junto con el saldo global del banco acumulado hasta esa fecha. Todos los clientes (RUT y nombre) junto con el nmero de cuentas corrientes que tienen (Cuntas tienen?), el saldo mximo y la suma de los saldos ordenado por el nmero de cuentas que tienen descendentemente; y para todos aquellos que tienen el mismo nmero de cuentas, ordenados por nombre ascendentemente. Todos los clientes (RUT) junto con el nmero de cuentas corrientes que tienen; pero slo aquellos clientes que tienen ms de una cuenta corriente. Todas las cuentas corrientes ( nmero ) cuyo saldo sea superior a la media de saldos de la misma sucursal. Estraer las cuentas en las que no han hecho ninguna operacin en un cajero de la sucursal de la cuenta. Extraer un listado de todas las sucursales ( nmero ) junto con el nmero de empleados de dicha sucursal; ordenado por el nmero de empleados Extraer un listado de todas las sucursales ( nmero ) junto con el nmero de empleados masculinos y el nmero de empleados femeninos.

11. # 12. 13. 14. 15.

______________________________________________________________________ 10

Tcnicas de Programacin

Inst. Profesional Providencia

16.

Extraer un listado de clientes ( RUT y nombre ) junto con el nombre del director de la sucursal de todas aquellas cuentas en las que el cliente es el primer titular.

______________________________________________________________________ 11

Tcnicas de Programacin

Inst. Profesional Providencia

1) Se dispone de la siguiente informacin de los juguetes de una juguetera: Fabricante Cod_Fabricante Nombre Pas de Fabricacin N C C 2 50 50 0 Juguetes Cod_Juguete Cod_Fabricante Descripcin Precio Edad Para_Bebe Stock N N C N N L N 2 2 80 7 2 4 0 0 2 0 0

Donde el campo Edad de la tabla JUGUETES representa la edad recomendada del nio que puede utilizarlo. El valor de este campo est expresado en meses o en aos segn si el campo Para_bebe vale TRUE o FALSE respectivamente. El campo stock indica la cantidad de juguetes disponibles. Indique la forma de obtener por pantalla: a) La descripcin y el precio de los juguetes disponibles en stock para un beb de 4 meses fabricados por Lego ordenados por el precio en forma decreciente y dentro del mismo precio ordenado por descripcin. b) El nombre del fabricante del cual existe la mayor cantidad de juguetes en esta juguetera. c) Si la mayora de los juguetes existentes son de beb. d) El valor total del stock existente en la juguetera. e) La cantidad de juguetes cuya descripcin comienza con la letra B. f) El nombre y el precio de los juegos originales disponibles en stock para la consola Play Station ordenados por el precio en forma decreciente y dentro del mismo precio ordenado por nombre. g) El nombre la consola para la cual existe la menor cantidad de juegos en stock. h) Si la mayora de los juegos existentes son originales. i) La cantidad de juegos existentes y la cantidad de CDs existentes. j) La cantidad de juegos que tienen ms de 1 CD. 2) Se dispone de informacin de productos alimenticios organizada de la siguiente manera: Productos Cod_producto Nombre_Producto Nombre_Proveedor Precio_Unitario Tipo_envase Depositos Cod_producto Nombre_deposito Stock_actual Stock_minimo Fecha_ultima_compra

Autoincremental Alfanumrico(40) Alfanumrico(40) Numrico Alfanumrico(30)

Autoincremental Alfanumrico(40) Numrico Numrico Date

Ej.de Tipo_envase : Bolsa, caja, paquete, botella, etc. Indique la forma de obtener: a) La lista de productos cuyo stock actual se encuentra por debajo del stock mnimo. Para cada producto indicar: nombre del producto, nombre del depsito y la fecha de la ltima compra. El listado debe aparecer ordenado por el nombre del depsito y dentro del mismo depsito, ordenado por nombre del producto. b) La cantidad de cajas que hay actualmente en el depsito con nombre CENTRAL.

______________________________________________________________________ 12

Tcnicas de Programacin

Inst. Profesional Providencia

c) El nombre del producto ms caro que existe en stock y el nombre de un depsito donde puede encontrrselo almacenado. Informar el resultado en dos componentes de tipo Label. d) El nombre del depsito que contiene la menor cantidad total de stock de productos. Informe el resultado en un componente Edit. e) La cantidad de dinero necesario para reponer el stock de aquellos productos que se encuentren por debajo del stock mnimo. f) La lista de proveedores (sin repetidos) a los que se les compr durante un mes indicado por el usuario. Considere que el mes y el ao son ingresados en dos componentes de tipo Edit.

g) La cantidad de depsitos en los que puede encontrarse cada producto. h) El nombre del proveedor al que corresponde el producto con mayor necesidad de reposicin de cada depsito, es decir, aquel producto que presente la mayor diferencia con su stock mnimo. Nota: En caso de utilizar una consulta con parmetros, indicar como se hace la invocacin. 3) Se dispone de informacin de transporte de pasajeros organizada de la siguiente manera: Micros Boletos Cod_Viaje Autoincremental Cod_boleto Autoincremental Nombre_Empresa Alfanumrico(40) Cod_Viaje Numrico Origen Alfanumrico(40) Asiento Numrico Destino Alfanumrico(40) Nombre Alfanumrico(40) FechaSalida Date HoraSalida Time Cant_Asientos Alfanumrico (2) Indique la forma de obtener: a) La lista de pasajeros que parten de La Plata con destino a Lujn el prximo domingo 18/8/02 ordenada por fecha y hora de salida y por nombre del pasajero. b) La cantidad de viajes que realizar cada empresa durante el mes de octubre de 2002. c) El origen del ltimo micro que llega a La Plata el da de hoy, 13/8/02. Mostrar el nombre de la localidad de origen en un componente Edit. d) La lista de viajes que ya NO poseen asientos libres, es decir, se han vendido todos los pasajes. e) Un listado con el cdigo de viaje, el nombre de la empresa y la cantidad de asientos disponibles indicando las localidades de origen y destino y la fecha de salida. f) El da en que partieron desde todo el pas la mayor cantidad de micros con destino a Bariloche durante las vacaciones de invierno (del 22/07/07 al 2/08/02). Informar el resultado en una componente de tipo Label. g) La capacidad del micro ms chico (el que tiene la menor cantidad de asientos). Informar el resultado en una componente de tipo ListBox. h) El nombre de la persona que ms boletos ha comprado durante el ao 2001. Informe el resultado en una componente Edit. Nota: En caso de utilizar una consulta con parmetros, indicar como se hace la invocacin.

______________________________________________________________________ 13

Tcnicas de Programacin

Inst. Profesional Providencia

4) Se dispone de informacin de un restaurante organizada de la siguiente manera: Tipos Cod_Tipo Descripcin Menu Cod_Plato Nombre Precio Cod_Tipo Factura Cod_Fac Cod_Plato Cantidad Fecha

Autoincremental Alfanumrico (40)

Ejemplos de Tipos son: Entrada, Plato principal, postre, bebida, etc.

Autoincremental Alfanumrico(40) Numrico Numrico

Numrico Numrico Numrico Date

Indique la forma de obtener: a) La lista de los platos servidos en una fecha dada ordenados en forma creciente por cdigo de factura y, dentro de la misma factura, ordenada por la descripcin del tipo y luego por nombre del plato. Estos dos ltimos criterios deben ser realizados en forma descendente. b) La cantidad de platos de cada tipo. c) Descripcin de los tipos a los que pertenecen los platos servidos en una factura dada. d) La cantidad de facturas en las que aparece el plato con nombre ravioles. e) La lista de los platos servidos en una factura dada ordenados en forma creciente por cantidad y para una misma cantidad, ordenada por la descripcin del tipo y luego por el nombre del plato. Estos dos ltimos criterios deben ser realizados en forma descendente. f) El precio ms barato de cada tipo. g) Descripcin de los tipos a los que pertenecen los platos servidos en una fecha dada. h) La cantidad de facturas en las que aparece el tipo de plato con descripcin Entrada. Nota: En caso de utilizar una consulta con parmetros, indicar como se hace la invocacin. 5) Se dispone de informacin de pelculas de un video club organizada de la siguiente forma: Categoras Cod_Categoria Ttulo Pelculas Cod_Pelicula Cod_Categoria Ttulo Actor_Principal Actriz_Principal Director Fecha_de_estreno

N C

2 30

Ejemplos de categoras son: Drama, Suspenso, Comedia, etc.

N N C C C C D

2 2 50 30 30 25

Indique la forma de obtener: a) El ttulo, el director y la fecha de estreno de todas las pelculas ordenadas en forma creciente por director y dentro del mismo director en forma decreciente por el ttulo. b) La cantidad de pelculas que ha realizado cada actor en el papel de actor principal. c) Ttulos de las categoras a las que pertenecen las pelculas estrenadas en un ao dado sin repeticin. d) La cantidad de categoras distintas en las que trabaj la actriz Catherine Furlop. e) El nombre del director que ms pelculas dirigi en el ao 2005. f) El nombre de la categora con menos pelculas en un intervalo de fechas dado. Nota: En caso de utilizar una consulta con parmetros, indicar como se hace la invocacin.

______________________________________________________________________ 14