Powered By Blogger

martes, 30 de noviembre de 2010

LAS CONSULTAS


Tipos de Consultas

Las consultas son los objetos de una base de datos que permiten recuperar datos de una tabla, modificarlos e incluso almacenar el resultado en otra tabla.
  • Consultas de selección.- aquellas que extraen o nos muestran datos. Muestran los datos de una tabla que cumplen los criterios especificados. Una vez obtenido el resultado se puede consultar los datos para modificarlos (podrá hacer o no según la consulta). Una consulta de selección genera una tabla lógica (porque no está físicamente en el disco duro sino en la memoria del ordenador y cada vez que se abre se vuelve a calcular).
  • Consultas de acción.- Realizan cambios a los registros. Hay varios tipos de consultas de acción, de eliminación, de actualización, de datos anexados y de creación de tablas.
  • Consultas específicas de SQL.- No se pueden definir desde la cuadrícula QBE de Access sino que se tienen que definir directamente en SQL.
Crear una consulta

Pasos a seguir:
Abrir la base de datos donde se encuentra la consulta a crear y clic en el botón Diseño de Consulta en la pestaña Crear:
Diseño de consulta
Utilizar el Asistente para consultas que se ve en la imagen anterior para crear consultas con un poco de ayuda.
Si se hace clic en el botón Asistente para consultas aparecerá el siguiente cuadro de diálogo:

 Al entrar en la Vista Diseño de consulta nos pide primero las tablas de las que la consulta sacará los datos con un cuadro de diálogo parecido al siguiente:
Seleccionar la tabla de la que queremos sacar datos y clic sobre el botón Agregar.
Si queremos sacar datos de varias tablas agregar de la misma forma las demás tablas.
Finalmente Cerrar.

Aparecerá la ventana Vista Diseño de consultas.








 
Si observas la pantalla, en la parte superior tenemos la zona de tablas donde aparecen las tablas añadidas con sus correspondientes campos, y en la parte inferior denominada cuadrícula QBE definimos la consulta.
Cada columna de la cuadrícula QBE corresponde a un campo.
Campo: ahí ponemos el campo a visualizar; nombre de un campo de la tabla y también un campo calculado.
Tabla: nombre de la tabla de la que sacamos el campo, además sirve para definirconsultas en varias tablas.
Orden: ordena las filas del resultado.
Mostrar:  por ejemplo si queremos que la consulta nos saque todos los alumnos de Valencia, necesitamos el campo Poblacion para seleccionar los alumnos pero no queremos que aparezca la población en el resultado ya que todos son de la misma población.
Criterios: especifica un criterio de búsqueda. "condición que deben cumplir los registros que aparecerán en el resultado de la consulta".
O: esta fila y las siguientes se utilizan para combinar condiciones.

 
Añadir Campos

  • Doble clic sobre el nombre del campo que aparece en la zona de tablas, y se colocará en la primera columna libre de la cuadrícula.
  • Clic sobre el nombre del campo que aparece en la zona de tablas y sin soltar el botón del ratón arrastrar el campo sobre la cuadrícula, soltar el botón cuando esté sobre la columna delante de la cual se deja el campo que está añadiendo.
  • Clic sobre la fila Campo: de una columna vacía de la rejilla, aparecerá a la derecha la flecha para desplegar la lista de todos los campos de todas las tablas que aparecen en la zona de tablas. Si tenemos muchos campos y varias tablas podemos reducir la lista seleccionando primero una tabla en la fila Tabla:, así en la lista desplegable sólo aparecerán campos de la tabla seleccionada.
  • Teclear directamente el nombre del campo en la fila Campo: de una columna vacía de la cuadrícula.
  • Si se quiere que todos los campos de la tabla aparezcan en el resultado de la consulta se utiliza el asterisco * (sinónimo de 'todos los campos').

Definir campos calculados
 
Los campos calculados son campos obtenidos del resultado de una expresión o de una función.
Encabezados de columna
 
Se puedecambiar el encabezado de las columnas del resultado de la consulta.
Generalmente aparece en el encabezado de la columna el nombre de la columna, si quiere cambiar ese encabezado lo indicamos en la fila Campo: escribiéndolo delante del nombre del campo y seguido de dos puntos ( : ). Se suele utilizar sobre todo para los campos calculados.
En la consulta que aparece más arriba tienes el ejemplo de la segunda columna, esta tendrá en el encabezado Mes_Factura y en la columna se visualizará el mes de la fecha de la factura (tenemos un campo calculado que utiliza la función mes( ), función que obtiene el mes de una fecha).

Cambiar el orden de los campos
 
Si se ha incluido campos en la cuadrícula y se desea cambiar el orden de estos campos podemos mover una columna (o varias) arrastrándola o bien cortando y pegando.
  • Para mover una columna arrastrándola: Posicionar el cursor sobre el extremo superior de la columna y cuando aparece la flecha hacer clic, la columna aparecerá resaltada (está seleccionada). Pulsar el botón del ratón y sin soltarlo arrastrar la columna hasta la posición deseada.
  • Para mover una columna cortándola: Seleccionar la columna y aparece hacer clic). Luego clic en .

Luego crear una columna en blanco en el lugar donde queremos mover la columna que hemos cortado con la opción Insertar Columnas de la pestaña Diseño.
Seleccionar esa columna y clic sobre el icono Pegar la pestaña Inicio (o bien teclear Ctrl+V).

Para seleccionar varias columnas consecutivas, seleccionando la primera y manteniendo la tecla May pulsada, se seleccionarán las dos y todas las columnas que se encuentren entre las dos.

 
Guardar la Consulta

  • clic sobre   o bien, luego cerrar la consulta y clic sobre Cerrar.

 
Ejecutar la Consulta

  • Desde el Panel de Exploración: haciendo doble clic en su nombre.
  • Desde la vista diseño de la consulta: dando clic en el botón Ejecutar de la pestaña Diseño:

Nota: visualizando el resultado de una consulta, lo que vemos realmente es la parte de la tabla que cumple los criterios especificados, por lo tanto si modificamos algún dato de los que aparecen en la consulta estaremos modificando el dato en la tabla (excepto algunas consultas que no permiten esas modificaciones).
 
 
Modificar el diseño de una consulta

Si queremos modificar el diseño de una consulta clic derecho sobre el nombre de la consulta Vista Diseño
 
Ordenar las Filas

Para ordenar las filas del resultado de la consulta clic sobre la fila Orden: del campo por el cual queremos ordenar las filas, clic para desplegar la lista y elegir el tipo de ordenación, este puede ser Ascendente de menor a mayor, si el campo es numérico por orden alfabético, si el campo es de tipo texto, de anterior a posterior si el campo es de tipo fecha/hora, etc..., o bien puede ser Descendente en orden inverso.

El tipo de ordenación es independiente por lo que se puede utilizar una ordenación distinta para cada columna.

Seleccionar Filas

Para seleccionar filas indicamos un criterio de búsqueda (condición que deberán cumplir todas las filas que aparezcan en el resultado de la consulta).
Cuando la condición es una igualdad no es necesario poner el signo =, podemos poner directamente el valor cualquiera en la fila Criterios; si no ponemos operador asume por defecto el =.
Siempre que se encuentra un texto lo encierra entre comillas.
Si en la fila Criterios: queremos poner un nombre de campo en vez de un valor (para comparar dos campos entre sí) tenemos que encerrar el nombre del campo entre corchetes [ ]. Por ejemplo queremos poner la condición precio = coste en la que precio y coste son dos campos, tenemos que poner en la fila criterios: [coste], si no ponemos los corchetes añadirá las comillas y entenderá Precio = "coste", precio igual al valor Coste no al contenido del campo Coste.

Para indicar varias condiciones se emplean los operadores Y y O.
En un criterio de búsqueda en el que las condiciones están unidas por el operador Y, para que el registro aparezca se deben cumplir todas las condiciones. Por ejemplo precio > 100 y precio < 1200, aparecen los registros cuyo precio está comprendido entre 101 y 1199.
En un criterio de búsqueda en el que las condiciones están unidas por el operador O, el registro aparecerá en el resultado de la consulta si cumple al menos una de las condiciones.
Todas las condiciones establecidas en la misma fila de la cuadrícula quedan unidas por el operador Y.
En el ejemplo siguiente serían alumnos de Valencia Y cuya fecha de nacimiento esté comprendida entre el 1/1/60 y el 31/12/69.
Del mismo modo pasa con cada una de las filas o:
Si queremos que las condiciones queden unidas por el operador O tenemos que colocarlas en filas distintas (utilizando las filas O: y siguientes).
Por ejemplo, si en la cuadrícula QBE tenemos especificado los siguientes criterios:
Visualizaremos de la tabla Alumnado los campos Apellidos, Nombre, Población y Fecha nacimiento, los alumnos aparecerán ordenados por Apellidos pero únicamente aparecerán aquellos que sean de Valencia y hayan nacido entre el 1/1/60 y el 31/12/69, o bien aquellos de Alicante sea cual sea su fecha de nacimiento.
¡Ojo! El criterio de la fecha de nacimiento únicamente afecta a la población Valencia por encontrarse en la misma fila.
Access no diferencia entre mayúsculas y minúsculas a la hora de realizar la búsqueda de registros.

Consultas con parámetros

A menudo, en una consulta necesitamos utilizar un valor que no es conocido en ese momento sino que queremos que lo introduzca el usuario cuando se ejecute la consulta, en este caso necesitamos utilizar en nuestra consulta un parámetro.
Un parámetro funciona de forma parecida a un campo de tabla, pero el valor que almacena lo introduce el usuario cuando se ejecuta la consulta.
En una consulta cuando utilizamos un nombre de campo que no está en el origen de datos, Access considera este campo como un parámetro y cuando se ejecuta la consulta nos pide Introducir el valor del parámetro mediante un cuadro de diálogo como este:
En el ejemplo anterior, en la consulta tendríamos que añadir una condición de búsqueda que especifique que la Población es igual al Valor a introducir, de esta manera:
Ojo cuando pongamos el nombre del parámetro es importante escribirlo entre [ ], de lo contrario Access le añadirá comillas y no lo considerará como un nombre de parámetro, sino como un valor.
Otra forma de utilizar un parámetro en una consulta es definiéndolo mediante el botón Parámetros de la pestaña Diseño.
Parámetros
En este caso, después de elegir la opción, se abre el cuadro de diálogo Parámetros de la consulta donde podemos indicar el nombre del parámetro y el tipo de dato.
La diferencia entre escribir directamente un nombre de parámetro y definirlo con el botón Parámetros es que, si se asigna un tipo de dato, Access comprueba automáticamente el tipo del valor introducido por el usuario.


Consultas Multitabla
Consulta que obtiene datos de varias tablas por lo que contiene en la zona de tablas de la ventana DISEÑO las distintas tablas de donde obtiene esos datos.
Para añadir una tabla a la zona de tablas (una vez en la ventana Diseño de consulta) haremos clic en el botón MOSTRAR TABLA de la pestaña DISEÑO:

Mostrar Tabla

Si las tablas no están relacionadas o no tienen campos con el mismo nombre, la consulta obtiene la concatenación de todas las filas de la primera tabla con todas las filas de la segunda tabla, si tenemos una tercera tabla concatenará cada una de las filas obtenidas en el primer paso con cada una de las filas de la tercera tabla, y así sucesivamente. Vemos que no interesa basar la consulta en muchas tablas ya que el resultado de la concatenación puede alcanzar dimensiones gigantescas.
Además, normalmente la mayoría de las concatenaciones obtenidas no nos sirven y entonces tenemos que añadir algún criterio de búsqueda para seleccionar las filas que al final nos interesan. Por ejemplo me puede interesar datos de la tabla Alumnado y de la tabla Cursos porque quiero sacar una lista con los datos de cada alumno y nombre del curso al que pertenece, en este caso no me interesa unir el alumno con cada uno de los cursos sino unirlo al curso que tiene asignado; en este caso tenemos que combinar las dos tablas.
Combinar tablas
Combinamos dos tablas por un campo (o varios) de unión de la misma forma que relacionamos tablas en la ventana RELACIONES arrastrando el campo de unión de una de las tablas sobre el campo de unión de la otra tabla. De hecho si añadimos a la zona de tablas, tablas relacionadas, estas aparecerán automáticamente combinadas en la zona de tablas de la ventana DISEÑO DE CONSULTA.
También se combinan automáticamente tablas que tengan un campo con el mismo nombre en las dos tablas aunque no exista una relación definida entre ellas.
Cuando dos tablas están combinadas en una consulta, para cada fila de una de las tablas Access busca directamente en la otra tabla las filas que tienen el mismo valor en el campo de unión, con lo cual se emparejan sólo las filas que luego aparecen en el resultado y la consulta es más eficiente.
Cuando las tablas están combinadas aparecen en la ventana diseño de la consulta de la siguiente manera:


Las composiciones vistas hasta ahora son COMPOSICIONES INTERNAS ya que todos los valores de las filas del resultado son valores que están en las tablas que se combinan.
Con una composición interna sólo se obtienen las filas que tienen al menos una fila de la otra tabla que cumpla la condición, por ejemplo: en la lista de alumnos comentada anteriormente no saldrán los alumnos que no tengan curso asignado.
Pues en los casos en que queremos que también aparezcan las filas que no tienen una fila coincidente en la otra tabla, utilizaremos la COMPOSICIÓN EXTERNA.
La composición externa
La composición externa se utiliza cuando queremos que también aparezcan las filas que no tienen una fila coincidente en la otra tabla.
  • Añadir las dos tablas a la zona de tablas de la consulta.
  • Combinar las dos tablas por los campos de unión:
  • Hacer doble clic sobre la línea que une las dos tablas.
  • En el cuadro de diálogo que aparecerá haz clic en el botón Tipo de combinación.
Aparece el cuadro de diálogo PROPIEDADES DE LA COMBINACIÓN


Por defecto la combinación es interna (incluye sólo las filas donde los campos combinados (campos de unión) de ambas tablas sean iguales), si queremos definir una combinación externa deberemos seleccionar la opción 2 o la 3 según lo que queramos obtener.

Si seleccionamos la opción 2,
,
la combinación aparecerá de la siguiente forma:
Si seleccionamos la opción 3
,
la combinación aparecerá de la siguiente forma:
El sentido de la flecha nos indica de qué tabla obtendremos todos los registros.


1 comentario: