SQL 3º L.A.D.E. SQL - 1 -

Documentos relacionados
MÓDULO 1: ORGANIZACIÓN Y ESTRUCTURA DE LA INFORMACIÓN. Tema 3: Interrogación y explotación de datos. Leire Aldaz, Begoña Eguía y Leire Urcola

SELECT listadecampos FROM nombredetablas WHERE condicionesdebúsqueda;

SQL Básico. José Muñoz Jimeno Febrero 2015

SQL, Consultas. Son Importantes las Consultas? Cuál es el Resultado de SELECT? Andrés Moreno S.

Anexo 3 COMPONENTES DE SQL SERVER. Los DDL (Data Definition Languaje) que permiten crear y definir nuevas

Lenguaje de manipulación de datos

LENGUAJE DE CONSULTA ESTRUCTURADO (SQL)

SELECT SELECT WHERE WHERE GROUP BY

SQL. Amparo López Gaona. México, D.F. Noviembre 2003

Insertar Datos en Tablas

Capítulo 4. Realización de consultas

ÍNDICE. Introducción... Capítulo 1. Características, instalación, inicio y entorno de trabajo... 1

Agrupamiento de registros. Elaboración de claúsulas avanzadas de selección. 31/12/2011. Unidad 9

LENGUAJE DE MANIPULACIÓN DE DATOS (DML) CONSULTA DE DATOS

Práctica 2: CONSULTAS

Tema 7. Elaboración de consultas básicas de selección. Lenguajes de bases de datos. SQL básico 15/12/2011

1. DML. Las consultas de resumen

Ejercicios SQL Empresa

Base de Datos. Docente: Ing. Francisco Rodríguez BASE DATOS. Resultados. Internet. Requerimientos

Introducción 1 Recuperación de Datos mediante la Sentencia SQL SELECT

SQL. Carlos A. Olarte BDI

Un proyecto de IBM llamado Sistem/R construye un prototipo simple llamado SQUARE que después se transformó en SQL.

SQL SERVER Curso Teórico-Práctico

Procedimientos para agrupar y resumir datos

INFORMÁTICA MÉDICA. Profesor: MsC. Liz Armenteros Chávez

PRESENTACION SQL SENTENCIAS SQL 5TO SEMESTRE DE INGENIERIA PROFESOR INGENIERO EDGAR SANDOVAL

Ejemplo de gestión de datos con SQL

EJERCICIOS DE SQL. CONSULTAS MÁS COMPLEJAS (III)

Bases de datos: Lenguaje de consultas SQL

Ejercicio de Microsoft Access

SQL. Lenguaje de Consulta Estructurado. Curso básico de SQL (Leire Urcola Carrera)

TEMA 4.. CONSULTA DE DATOS I.

Access SQL: DDL y DML. Una empresa de Ingeniería precisa una base de datos para la gestión de sus proyectos.

Consultas SQL INNER JOIN

Modulo I: Introducción Gestores de Bases De Datos

RESUMEN DEL LENGUAJE SQL

El lenguaje SQL es un lenguaje estándar para el acceso y

SUBCONSULTAS SQL. Cuando se ejecuta una consulta que contiene una subconsulta, la subconsulta se ejecuta por cada fila de la consulta principal.

Base de Datos. Docente: Ing. Francisco Rodríguez BASE DATOS. Resultados. Internet. Requerimientos

Restricción y Clasificación de los Datos. Copyright Oracle Corporation, All rights reserved.

MANUAL BÁSICO DEL LENGUAJE SQL

MATERIAL INTRODUCTORIO ORACLE 11G

SQL DML Select. Ges$ón y Modelación de Datos. María Constanza Pabón

Computación Web (Curso 2015/2016)

Operador Restricción

Lenguaje de consulta de datos SELECT PARTE 2

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Las soluciones de las consultas vistas en clase se encuentran en la página 5 en adelante.

A.1. Definiciones de datos en SQL

Operaciones con bases de

El SQL es un lenguaje estándar de programación para el acceso a bases de datos.

Manual de Sentencias Básicas en SQL

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACIÓN

Consultas. Comparación Filtros vs Consultas Tipos de Consultas Crear, reutilizar y Ejecutar Consultas. Consultas Diapositiva 1.

ADMINISTRACION DE ORACLE 9i Guía de estudio (OCA) TEMA 1

Ser capaces de realizar una consulta dentro de otra

FUNCIONES EN SQL SERVER

Introducción a la Información Geográfica Selección de elementos Sesión 3

Sistemas Informacionales

Ing. Santiago C. Pérez Laura Noussan Lettry Carlos Campos

Consulta por Criterio y Expresión

Criterios para campos Texto Corto, Largo e Hipervínculo

Prácticas de Microsoft Access

Uso de SQL. "WHERE id = " + cuentas[i].getid() o bien ResulSet r =s.executequery("select nombre FROM alumno" + "WHERE id = " + cuentas[i].

TEMA 10. INTRODUCCCIÓN A SQL. CONSULTAS BASADAS EN UNA TABLA

Vistas en MS SQL Server. Bases de Datos I Universidad Católica II Cuatrimestre

Bases de Datos Geográficos

SQL: Lenguaje de Interrogación Estructurado

UNIDAD 1.- PARTE 1 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES. Xochitl Clemente Parra Armando Méndez Morales

El lenguaje SQL III: Creación de bases de datos y seguridad. Introducción

TEMA 5: MODIFICACIÓN DE LA BASE DE DATOS EN SQL

Manual Aprendiendo Practicando Oracle SQL (Spanish Edition) Click here if your download doesn"t start automatically

Oracle Fundamentos. Programa de Estudio.

1. Lenguaje de Definición de Datos. 2. Lenguaje de Manipulación de. Datos. M. C. Gustavo Alfonso Gutiérrez Carreón

Información general sobre las expresiones

SQL. Comandos DDL. Comandos DML

INTRODUCIR FORMULAS EN EXCEL

Guía práctica de SQL

Práctica 3. Consultas SQL

Vistas en InformiX Sistemas de Bases de Datos II EMT CETP A/S Leonardo Carámbula

Conceptos Avanzados de Programación en Internet

MANUAL BÁSICO DEL LENGUAJE SQL

Dependiendo de las tareas, podemos clasificar las sentencias SQL en dos tipos:

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Procedimientos para agrupar y resumir datos

Bases de Datos 1. Teórico: Structured Query Language

MODELOS DE KRIPKE. Lógicas para la Informática y la Inteligencia Artificial

Sistema de Registro, Derivación y Monitoreo Chile Crece Contigo

ÍNDICE INTRODUCCIÓN...17

Transcripción:

SQL SELECT < lista de atributos > * FROM < tabla/s > [WHERE < condición > ] ] [GROUP BY < atributo/s > ] [HAVING < condición > ] [ORDER BY < atributo/s > ASC DESC] ; PREDICADOS Los siguientes predicados pueden aplicarse a las condiciones que especifiquemos en la clausula where : BETWEEN AND, where atributo Between.. and.. IN (lista de valores), where atributo IN( val1, val2, val3, ) LIKE where atributo LIKE cadena de caracteres. *, sustituye a cualquier número de caracteres? sustituye a un único carácter. FUNCIONES - Funciones de manejo de fechas: Date( ) Year(arg) Month(arg) Day(arg) - Funciones agregadas: Count Sum Max Min Avg - Función SiInm 3º L.A.D.E. SQL - 1 -

INTRODUCCIÓN El lenguaje de interrogación de datos SQL es un conjunto de órdenes que permiten la consulta y la puesta al día de los datos de una base de datos. La puesta al día engloba la inserción de nuevos datos, la modificación y la supresión de datos ya existentes. Sin embargo, nosotros, vamos a centrarnos únicamente en la consulta o selección de los datos. La consulta de datos en SQL se hace con el verbo SELECT que significa seleccionar o extraer datos. La sintaxis global de la orden que permite la extracción de datos es la siguiente: SELECT < lista de atributos > * FROM < tabla/s > [WHERE < condición > ] [GROUP BY < atributo/s > ] [HAVING < condición > ] [ORDER BY < atributo/s > ASC DESC] ; Todas las cláusulas que van entre corchetes son opcionales. Por tanto, las cláusulas SELECT y FROM son las únicas obligatorias y permiten especificar respectivamente la lista de columnas o atributos a extraer y la lista de las tablas a partir de las cuales serán extraídas. El resto, son opcionales y sirven para refinar nuestra selección. CONSULTA SENCILLA precedente. La consulta sencilla se hace mediante las cláusulas obligatorias de la orden SELECT < lista de atributos > FROM < tabla/s >; La lista de atributos permite especificar las columnas o atributos que se desean visualizar, y éstos deberán estar separados por comas. Por ejemplo, para visualizar todos los datos de una tabla Clientes, se formulará la sentencia siguiente: SELECT idcliente, nombre, dirección, ciudad, tel FROM clientes; Esta sentencia lista al conjunto de clientes de la tabla Clientes. El orden en el que se presentarán los atributos es el que se especifique en la lista. Existe una manera de facilitar la formulación de la sentencia, reemplazando la lista de atributos por el carácter genérico *. Este carácter copia en la lista, los diferentes atributos tomados de la definición de la tabla. Y también toma obligatoriamente el orden SQL - 2-3º L.A.D.E.

especificado en la creación de la misma. Así, la sentencia anterior se formulará como sigue: FROM clientes; Hasta ahora hemos visto como listar todos los atributos de una tabla. Sin embargo, se pueden igualmente listar una parte de ellos, escribiendo simplemente en la lista los nombres que deseemos visualizar en un orden específico. Una consulta sencilla, sin cláusula WHERE permite extraer una parte vertical (proyección) de datos de la tabla. Si lo que se desea extraer es una parte horizontal (restricción) y una parte vertical es necesario entonces realizar una consulta calificada. CONSULTA CALIFICADA La consulta calificada o cualificada se hace a partir de una consulta simple y una cláusula WHERE. Así, para visualizar únicamente los clientes de Madrid, formularemos la siguiente sentencia: FROM clientes WHERE ciudad = Madrid ; La calificación se hace con la ayuda de la cláusula WHERE seguida de una o varias condiciones. Estas condiciones pueden estar relacionadas entre ellas por los operadores lógicos AND, OR y NOT. Ejemplos: 1. Listar de la tabla artículos todos aquellos cuyo precio unitario sea superior a 150 y su cantidad de stock inferior o igual a 100. FROM articulos WHERE pu > 150 AND stock<=100; 2. Mostrar de la tabla de empleados el dni, nombre, fecha de ingreso y salario de los empleados que trabajen en los departamentos 112 y 122. SELECT dni, nombre, fecha_in, salario FROM empleados WHERE numdept = 112 OR numdept = 122; 3º L.A.D.E. SQL - 3 -

3. Presentar de la tabla de Pedidos_Clientes el número del pedido, la identificación del cliente y la fecha aquellos pedidos no registrados en el primer cuatrimestre de 1998. SELECT numpedido, idcliente, fechapedido FROM Pedidos_Clientes WHERE NOT (fechaped >= #1/1/98# AND fechaped <= #30/4/98# ); EL PREDICADO BETWEEN. AND. El predicado BETWEEN.AND se utiliza para seleccionar registros que se encuentren en un rango determinado de valores (en un intervalo cerrado). Por ejemplo, la consulta anterior también se podía haber formulado de la siguiente manera: SELECT numpedido, idcliente, fechapedido FROM Pedidos_Clientes WHERE fechaped NOT BETWEEN #1/1/98# AND #30/4/98# ; Nota: En la cuadrícula QBE, en la fila de criterios, y en la columna en la que se especifique la fecha del pedido habría que especificarlo de la siguiente manera: Criterios: Negado Entre #1/1/98# Y #30/4/98# EL PREDICADO IN (lista de valores) El predicado IN permite comparar el valor de la expresión situada a la izquierda de la palabra IN con la lista de valores comprendidos entre los paréntesis. La condición de búsqueda es satisfecha cuando la expresión de comparación está comprendida en la lista de valores. Por ejemplo: Listar todos los clientes de las ciudades siguientes: PARIS, BARCELONA, MADRID, así como todos los artículos cuyo precio unitario es uno de los siguientes: 150, 200 y 300. FROM Clientes WHERE ciudad IN( PARIS, BARCELONA, MADRID ); FROM articulos WHERE pu IN(150, 200, 300) ; SQL - 4-3º L.A.D.E.

Nota: en QBE en la fila de criterios debajo de la columna ciudad para la tabla clientes y pu para la tabla artículos se especificaría lo siguiente: Criterios: In( PARIS ; BARCELONA ; MADRID ) Esta dos sentencias pueden formularse utilizando el operador lógico O (OR): FROM clientes WHERE ciudad = PARIS OR ciudad = BARCELONA OR ciudad = MADRID ; FROM articulos WHERE pu = 150 OR pu = 200 OR pu = 300 ; En QBE. Criterios: PARIS ó BARCELONA ó MADRID 150 ó 200 ó 300 EL PREDICADO LIKE Permite realizar una comparación de semejanza entre el valor de un atributo y el de una cadena de caracteres, para ello se pueden utilizar los caracteres: * y?. El * sustituye a una secuencia de caracteres, mientras que la? sustituye a un único carácter. Por ejemplo, presentar a los empleados cuyo dni comience por 34. FROM empleados WHERE dni LIKE 34* ; QBE: criterios: Como 34* 3º L.A.D.E. SQL - 5 -

FUNCIONES Dentro de la multitud de funciones que lleva ACCESS incorporadas vamos a manejar las funciones de manejo de fechas y las funciones agregadas. 1. FUNCIONES DE FECHA: Ahora( ), no lleva argumentos y presenta la fecha y hora actual del sistema. Fecha( ), no lleva argumentos y presenta la fecha actual o fecha del día del sistema. Año( arg ), devuelve un número - año del argumento - que deberá ser de tipo fecha. Mes( arg ), devuelve un número - mes del argumento - que deberá ser de tipo fecha. Día( arg ), devuelve un número - día del argumento - que deberá ser de tipo fecha. Operaciones con fechas: a) A una expresión de fecha se le puede sumar/restar un número determinado de días, dando como resultado una nueva fecha. <Fecha> + <número de días> => <Nueva fecha> b) También se pueden restar dos expresiones de fecha, dando como resultado en este caso el número de días que hay entre las dos fechas. <Fecha1> - <Fecha2> => <número de días> Ejemplo: Listar de la tabla Pedidos_Clientes aquellos pedidos con una antigüedad superior a 30 días. FROM Pedidos_Clientes WHERE Fecha_Pedido < Fecha( ) 30 ; O bien: Fecha( ) Fecha_Pedido > 30 ; Ejercicio: Una empresa tiene un plan de jubilación para aquellos empleados con mas de 60 años. Estos empleados percibirán una paga extra de un sueldo completo por cada año que llevan trabajando para la empresa. Presentar los nombres de estos empleados junto a su sueldo extra. SQL - 6-3º L.A.D.E.

2. FUNCIONES AGREGADAS: Estas funciones actúan sobre los registros de una tabla. Suma, realiza el sumatorio de los valores que toma un atributo o una expresión en todos o parte de los registros de una tabla Promedio, realizar el promedio de los valores que toma un atributo o expresión en todos o parte de los registros de una tabla. Cuenta, cuenta el número de registros.puede llevar como argumentos * [atributo]. Count( * ) es considerablemente más rápido que Count( atributo ), y cuenta también campos nulos, mientra que éste último no. Max, presenta el valor máximo que toma un atributo Min, presenta el valor mínimo que toma un atributo. Para utilizar estas funciones en Access, será necesario añadir a la cuadrícula QBE una línea de Totales. Esto se realiza en la ventana de diseño de la consulta pinchando en el icono de la barra de herramientas. Ejemplos: (1) Presentar de la tabla de empleados, el valor del sueldo máximo, el mínimo, el total QBE: y la media de los sueldos y, el total de empleados que hay almacenados en la tabla. Atributos: Máximo: Sueldo Mínimo: Suedo Suma: Sueldo Media: Sueldo Nº Empleados: Dni Tablas: Empleados Empleados Empleados Empleados Empleados Totales: Max Min Suma Promedio Cuenta Orden: Mostrar V V V V Criterios: O: SELECT Max(Suedo) AS Máximo, Min(Sueldo) AS Mínimo, Sum(Sueldo) AS Suma, Avg(Sueldo) AS Media, Count(Dni) AS Nº mpleados FROM Empleados ; (2) Presentar en pantalla el número de empleados que ganan más de 220000 pesetas. Atributos: Nº Empleados: Dni Suelod Tablas: Empleados Empleados Totales: Cuenta Orden: Mostrar V Criterios: > 220000 SELECT Count(DNI) AS Nº Empleados FROM Empleados WHERE sueldo > 220000 3º L.A.D.E. SQL - 7 -

(3) De la tabla de Artículos presentar en pantalla el valor total del stock de los mismos. SELECT Sum(pu * stock) AS Valor_Stock FROM Articulos ; Ejercicios: (1) Para los departamentos 111 y 112, hallar la media de los años en servicio de sus empleados en el día de hoy, presentando junto a la media calculada, el día de hoy. (2) Hallar cuántos empleados han ingresado en el año actual. (3) Para los empleados que han ingresado en la empresa en los últimos cinco años, hallar la edad media en años cumplidos de la edad a la que han ingresado. SiInm(condición; acción_parte_verdadera; acción_parte_falsa) La función SiInm se utiliza para evaluar una condición, y en función de que se cumpla o no se realizará una acción u otra. En un función SiInm se pueden anidar a su vez varias condiciones, es decir varias funciones SiInm. Ejemplo: En una campaña de ayuda familiar se ha decidido dar a los empleados una paga extra de 5000 pts. por hijo, a partir del tercero inclusive. Obtener para estos empleados: nombre y salario total que van a percibir incluyendo esta paga extra, y para el resto presentar únicamente su salario. SQL - 8-3º L.A.D.E.

SELECT nombre, IIF( numhijos>2, salario+5000*(numhijos-2), salario) AS salario FROM empleados; En QBE: Atributos: Nombre Salario: SiInm(numhijos>2;alario+5000*(numhijos-2); salario) Tablas: Empleados Empleados Ejercicio: Obtener los nombres de los empleados del departamento 112, así como su sueldo total incluyendo la comisión en aquellos que la tengan, y presentar a su lado el literal con comisión o sin comisión en función de que tengan o no comisión. AGRUPAMIENTO DE DATOS: GROUP BY La clausula GROUP BY permite agrupar registros que tengan valores comunes. El atributo o atributos de agrupamiento que se especifiquen junto a esta clausula deben obligatoriamente figurar en la lista de selección de la clausula SELECT. Utilizando esta cláusula se puede formular por ejemplo una sentencia que liste el número de clientes por ciudades: SELECT ciudad, Count(idcliente) AS NºClientes FROM clientes GROUP BY ciudad ; Atributos: Ciudad NºClientes: idcliente Tablas: Clientes clientes Totales: Agrupar por Cuenta 3º L.A.D.E. SQL - 9 -

De la tabla Pedidos_Clientes mostrar cuántos pedidos encarga cada cliente: SELECT idcliente, Count(NumPedido) AS NºPedidos FROM Pedidos_Clientes GROUP BY idcliente; Atributos: Idcliente NºPedidos: NumPedido Tablas: Pedidos_Clientes Pedidos_Clientes Totales: Agrupar por Cuenta Hallar el salario medio y la edad media en años para los empleados con igual comisión (es decir, para cada grupo de empleados con igual comisión). SELECT comisión, Avg(Salario) AS salario_medio, Avg(Year(Date( )) Year(Fecha_Naci)) AS edad_media FROM empleados GROUP BY comision ; Atributos: Comisión Salario_medio: Salario Edad-media: Año(Fecha( )) - Año(Fecha_Naci) Tablas: Empleados Empleados Empleados Totales: Agrupar por Promedio Promedio Ejercicio: De la tabla de empleados, presentar el número de trabajadores, el salario máximo y el salario medio de cada departamento de la empresa. CONDICIÓN DE AGRUPAMIENTO: HAVING Está enlazada a la cláusula GROUP BY, permitiendo efectuar una restricción sobre un grupo de registros que hayan sido previamente agrupados. Ejemplo: Presentar el número de empleados que la empresa ha contratado cada año, mostrando únicamente los contratados a partir de 1999. SQL - 10-3º L.A.D.E.

SELECT Year(Fecha_ingreso) AS Año, Count(Dni) AS NºContratados FROM empleados GROUP BY Year(Fecha_ingreso) HAVING Year(Fecha_ingreso) >= 1999 ; Atributos: Año: Año(Fecha_ingreso) NºContratados: Dni Tablas: Empleados Empleados Totales: Agrupar por Cuenta Mostrar: V V Criterios: >= 1999 La cláusula HAVING además de utilizarse para especificar condiciones o restricciones sobre el agrupamiento de datos, también se emplea cuando hay que formar condiciones que incluyan funciones agregadas, es decir, condiciones con las funciones: Sum, Avg, Count, etc., tengan o no que ver con el agrupamiento. Ejemplo: Presentar de la tabla Pedidos_Clientes aquellos con más de tres pedidos. SELECT idcliente, Count(NumPedido) AS Total_Pedidos FROM Pedidos_Clientes GROUP BY idcliente HAVING Count(NumPedido) > 3 ; Nota: en este caso la condición no tiene que ver con el agrupamiento de datos, pero como se utiliza la función Count es necesario especificarla en la cláusula HAVING, ya que sólo ésta puede realizar las condiciones con las funciones agregadas. Atributos: Idcliente Total_Pedidos: NumPedido Tablas: Pedidos_Clientes Pedidos_Clientes Totales: Agrupar por Cuenta Mostrar: V V Criterios: > 3 3º L.A.D.E. SQL - 11 -

Ejercicio: De la tabla empleados, para los departamentos 111, 112 y 122 que tengan empleados de mas de diez años de antigüedad y la media de hijos de esos empleados sea superior o igual a 2, presentar su retribución salarial con un incremento de un 15% ORDENACIÓN DEL RESULTADO DE UNA CONSULTA: ORDER BY La cláusula ORDER BY permite realizar operaciones de ordenación con los datos extraídos de una SELECT. Se pueden especificar uno o varios criterios de ordenación y en distinto orden, es decir, ascendente (por defecto) y/o descendente. En este último caso es necesario especificar detrás del atributo la opción DESC. Ejemplos: 1. Listar todos los clientes por orden de ciudad y nombre de cliente. FROM clientes ORDER BY ciudad, nombre ; 2. Presentar el número de empleados que la empresa ha contratado cada año, pero mostrando únicamente los contratados a partir de 1999 en orden descendente. SELECT Year(Fecha_ingreso) AS Año, Count(Dni) AS NºContratados FROM empleados GROUP BY Year(Fecha_ingreso) HAVING Year(Fecha_ingreso) >= 1999 ORDER BY Year(Fecha_ingreso) DESC ; SQL - 12-3º L.A.D.E.

Atributos: Año: Año(Fecha_ingreso) NºContratados: Dni Tablas: Empleados Empleados Totales: Agrupar por Cuenta Orden: Descendente Mostrar: V V Criterios: >= 1999 RELACIONES ENTRE TABLAS Los tipos de relaciones que permite ACCESS son: Relación de uno a muchos, es el tipo más común de relación entre tablas. En este tipo de relación cada registro de la tabla principal (A) puede tener más de un registro asociado en la tabla subordinada (B), pero a cada registro de la tabla (B) sólo le corresponde un solo registro de la tabla principal (A). A B Relación de uno a uno, a cada registro de la tabla (A) le corresponde un único registro de la tabla (B) y viceversa. Para poder establecer relaciones entre tablas es necesario hacer coincidir los campos de clave principal de una tabla con campos coincidentes en la tabla subordinada. Cuando el tipo de relación es de uno a varios se puede exigir la propiedad integridad referencial. Las reglas de la integridad referencial (ya comentadas en clase) se pueden resumir en: 3º L.A.D.E. SQL - 13 -

a) No puede haber registros en una tabla subordinada que no estén enlazados en la tabla principal. b) No se pueden eliminar registros de la tabla principal si tiene enlazados registros en la tabla subordinada (ya que en este caso se perdería la integridad referencial). En este caso, se tendrá que optar por el borrado en cascada o bien antes de eliminar los registros de la tabla principal se deberán eliminar los de las tablas subordinadas. Ejemplos: Listar los datos de aquellos clientes que hayan realizado algún pedido. SELECT nombre, direcc, telf, fechapedido FROM clientes, pedidos_clientes WHERE clientes.idcliente = pedidos_clientes.idcliente ; El resultado de esta consulta estará formada por las líneas que satisfagan la condición de composición. En QBE, antes de rellenar la cuadrícula hay que representar gráficamente la relación. CLIENTES Idcliente Nombre Direcc... PEDIDOS_CLIENTES Numpedido Idcliente fechapedido Atributos: Nombre Direcc Tlfno Fechapedido Tablas: Clientes Clientes Clientes Pedidos_clientes Orden: Mostrar: V V V V Criterios: O: Listar el importe total de cada pedido. SELECT numpedido, Sum([pu]*[cant]) AS importe FROM Articulos_pedidos, articulos WHERE Articulos_pedidos.idarticulo = articulos.idarticulo GROUP BY numpedido ; SQL - 14-3º L.A.D.E.

El resultado de la consulta lo formarán los registros de ambas tablas que tengan el mismo valor en la identificación del artículo. CLIENTES idcliente 1 Nombre Direcc Tlfno n PEDIDOS_CLIENTES Numpedido idcliente Fechapedido 1 ARTICULOS Idarticulo Desc pu 1 n n ARTICULOS_PEDIDOS Numpedido Idarticulo Cant (Aunque en la representación gráfica están plasmadas las relaciones entre las cuatro tablas, para realizar ésta consulta sólo sería necesaria la relación entre Articulos y Articulos_Pedidos ). Atributos Numpedido Importe: [pu]*[cant] Tablas: Clientes Clientes Totales Agrupar por Suma Orden: Mostrar: V V Criterios: O: Presentar en pantalla los datos de los clientes de Madrid que hayan realizado algún pedido entre el 12/1/00 y la fecha de hoy. SELECT nombre, direcc, telfno, fechapedido FROM clientes, pedidos_clientes WHERE clientes.idcliente = pedidos_clientes.idcliente AND fechapedido BETWEEN #12/1/00# AND Date( ) AND ciudad = Madrid ; 3º L.A.D.E. SQL - 15 -

En QBE: CLIENTES idcliente 1 Nombre Direcc Tlfno n PEDIDOS_CLIENTES Numpedido idcliente Fechapedido Atributos Nombre Direcc Tlfno Fechapedido Tablas: Clientes Clientes Clientes Clientes Totales Orden: Mostrar: V V V V Criterios: Entre #12/1/00# y Fecha( ) O: Listar el importe total de pedidos por fecha de pedido, presentando las fechas en orden descendente (es decir, hay que sumar los importes de los pedidos realizados en cada una de las fechas). SELECT fechapedido, Sum([pu]*[cant]) AS importe FROM pedidos_clientes, articulos_pedidos, articulos WHERE pedidos_clientes.numpedido = articulos_pedidos.numpedido AND articulos_pedidos.idarticulo = articulos.idarticulo GROUP BY fechapedido ORDER BY fechapedido DESC ; En QBE : SQL - 16-3º L.A.D.E.

PEDIDOS_CLIENTES Numpedido idcliente Fechapedido 1 Atributos Fechapedido Importe: [pu]*[cant] Tablas: Clientes Clientes Totales Agrupar por Suma Orden: Descendente Mostrar: V V Criterios: O: ARTICULOS Idarticulo Desc pu 1 n n ARTICULOS_PEDIDOS Numpedido Idarticulo Cant 3º L.A.D.E. SQL - 17 -