CMS modules by everest poker.

Consultas (I)

Imprimir
Valoración del Usuario:  / 4
MaloBueno 
Categoría: Teórico-práctico
Escrito por Neckkito

 

Si queréis bajaros este artículo en pdf pulsad aquí


Índice de contenidoConsultas1


¿UNA CONSULTA? UNA CONSULTA
LOS TIPOS DE COMBINACIONES
ALGUNAS CONSIDERACIONES SOBRE LA CREACIÓN DE CONSULTAS
CONSULTAS DE SELECCIÓN
CONSULTAS CON PARÁMETROS
CONSULTAS EN CASCADA
CONSULTAS DE TABLAS DE REFERENCIAS CRUZADAS

 

¿UNA CONSULTA? UNA CONSULTA
A través de las consultas podemos acceder a la información de una o varias tablas y manipularla a nuestro antojo, modificarla, ordenarla, filtrarla, crear nuevas tablas, etc. Si lo pensamos bien, ¿de qué nos serviría tener la información en las tablas si sólo pudiéramos acceder a ella, sin poder hacer más? ¿No nos quedaríamos un poco “cojos”?

Porque pienso que es frustrante el hecho de tener la información pero no poder gestionarla como nosotros queremos (o, para gestionarla, tener que realizar complicadas operaciones manuales que consumirían muchísimo tiempo).


LOS TIPOS DE COMBINACIONES
Aunque parezca un poco “reiterativo” quiero insistir en que al confeccionar una consulta hay que tener siempre en cuenta los tipos de combinaciones que se pueden dar entre dos tablas (provengan de una propia tabla en sí como de otra consulta). Un desarrollo de este punto lo podéis encontrar en el artículo sobre tablas, en el epígrafe relaciones entre tablas, donde lo dicho allí sirve perfectamente para este tema de consultas.


Pensad que el trabajo de realizar una consulta complicada, que incluya varias (muchas) tablas, construida de manera impecable, puede no dar los resultados previstos simplemente porque nos hemos olvidado de definir correctamente las combinaciones.


Simplemente, como recordatorio, apunto aquí que hay tres tipos de combinaciones:


Tipo 1: inclusión de las filas donde los campos combinados de ambas tablas sean iguales (¡ojo, que es la combinación que por defecto establece Access).
Tipo 2: inclusión de todos los registros de la tabla de la izquierda y sólo aquellos que sean iguales en la tabla de la derecha.
Tipo 3: inclusión de todos los registros de la tabla de la derecha y sólo aquellos que sean iguales en la tabla de la izquierda.


ALGUNAS CONSIDERACIONES SOBRE LA CREACIÓN DE CONSULTAS
De manera muy genérica (porque lo veremos en detalle un poco más adelante) debemos considerar que hay cinco tipos de consultas, que son


Consultas de selección
Consultas con parámetros
Consultas de tablas de referencias cruzadas
Consultas de acción
Consultas SQL


Otro aspecto que debemos tener en cuenta es que podemos “manipular” los datos de la consulta a través de:


Ordenación
Agrupación
Aplicación de filtros


Dos aspectos finales:


No hay que olvidar que las consultas permiten añadir campos calculados.
Si no podemos sacar información directamente de una tabla quizá sí lo podremos hacer a través de consultas en cascada.


En pocas palabras, cuando queramos hacer una consulta debemos plantearnos lo siguiente:


- Qué tablas tienen los datos
- Qué tipo de consulta voy a necesitar
- Cómo voy a manipular los datos


Vamos a ver con un poco más de detalle las consultas de selección, y aprovecharemos para “otear” algunos elementos para manipular las consultas.


CONSULTAS DE SELECCIÓN
Las consultas de selección son las consultas que se crean por defecto cuando pulsamos el botón “crear consulta en vista diseño”. Como su nombre indica, nos permiten seleccionar los campos que queremos que se muestren, con un proceso tan simple como seleccionar el campo que queramos de la tabla y arrastrarlo al grid de la consulta.


Vamos a aprovechar este tipo de consultas tan  “simple” para echar un vistazo a los elementos que nos permiten mostrar la información tal y como queremos. Si nos fijamos en el grid de la consulta veremos que hay una serie de líneas comunes a todas las columnas:


Campo y tabla: simplemente nos dan información de qué campo se ha incluido en la consulta y a qué tabla pertenece.


Ordenación
Nos permite mostrar los datos en orden ascendente o descendente. Aunque esto parezca más que evidente la cosa tiene su importancia, porque puede que la consulta, a pesar de mostrarnos los datos, puede que no nos los muestre como nosotros queremos.

Un ejemplo clarificará lo que quiero decir.


Supongamos que tenemos una tabla con los siguientes campos:


[Nombre]
[Puntos prueba A]
[Puntos prueba B]
[Puntos totales]


Hacemos una consulta sobre ella para saber quién ha sacado el mayor número de puntos, pero también queremos clasificarlos por los que, en primer lugar, han sacado más puntos en la prueba B, y, en segundo lugar, más puntos en la prueba A. Así, la consulta nos queda con la siguiente estructura, habiendo ordenado todos los campos (exceptuando [Nombre]) con orden descendente:


[Nombre]  /  [Puntos prueba A]  /  [Puntos prueba B]  /  [Puntos totales]


¡Sorpresa! La cosa no nos funciona bien, porque no nos da la “clasificación” con los parámetros que nosotros queríamos. ¿Por qué?


Porque en la consulta se establece una especie de prelación que viene dada por el orden de las columnas. Es decir, el valor ordenado que “manda” en nuestra consulta es  [Puntos prueba A], el segundo que “manda” es [Puntos prueba B] y finalmente nos queda [Puntos totales].


¿Cómo solucionarlo? Cambiando los campos de columna. Así, para conseguir lo que queremos, nuestra consulta debería mostrar:


[Nombre]  /  [Puntos totales]  /  [Puntos prueba B]  /  [Puntos prueba A] 


Agrupación
Como su nombre indica, nos permite realizar una agrupación de los datos para poder efectuar diversas operaciones.


Para conseguir que una consulta de selección pase a ser una consulta de totales basta que, una vez construida la consulta, nos vayamos a la cinta de opciones y busquemos el botón que indica sumatorio (la sigma griega) y pulsemos sobre él. Veremos entonces que, en el grid de la consulta, aparece una nueva línea, que indica “Agrupar por”. Si desplegamos esta línea veremos todas las operaciones que se pueden realizar con ella.


Truco: si tenemos una consulta de selección sobre la que hay que hacer diferentes operaciones (de forma separada), en vez de construir cada vez la consulta, podemos guardar esa consulta como si fuera una plantilla, copiarla y pegarla con otro nombre (u otros nombres) y, sobre estas copias, realizar las operaciones pertinentes. Nos ahorraremos un poco de trabajo.


Truco: imaginemos que, por los motivos que sean, no hemos creado una tabla auxiliar para, por ejemplo, guardar las provincias (para más información revisad el artículo dedicado a las tablas). De manera que en nuestra tabla de trabajo tenemos los siguientes registros:


Antonio / Baleares
Luis / Baleares
José / Cáceres
Isabel / Murcia
Fina / Cáceres
Etc.


Si hacemos una consulta de selección sobre esa tabla, y en concreto sobre el campo [Provincia], obtendremos lo siguiente


Baleares
Baleares
Cáceres
Murcia
Cáceres
Etc.


Queremos poner un combo en un formulario para seleccionar la provincia, pero claro, nos salen provincias repetidas (y si hubiera 10000 registros ni os cuento). ¿Cómo podemos arreglar esto?


Pues simplemente cogemos esa consulta de sólo provincias y la convertimos en una consulta de totales, sin tocar nada más de la línea “Agrupar por”. Si ejecutamos esa consulta obtendremos ahora:


Baleares
Cáceres
Murcia


Y ya tenemos una lista “racional” que puede servir de origen a ese combo que nos permitirá seleccionar una provincia.


Filtros
Los filtros nos permiten efectuar una selección de los datos que tenemos en la tabla. Los filtros los aplicamos en la línea del grid que corresponde a “criterio”. Ciertamente el uso de los filtros no supone ningún misterio, siempre y cuando se sigan unas normas básicas (los filtros con parámetros son ligeramente diferentes). Os explico aquí algunos filtros más comunes:


Filtros para campos tipo texto
Debemos poner el valor a buscar entre comillas. Por ejemplo, siguiendo con el ejemplo anterior, si quisiéramos filtrar por la provincia Cáceres en la columna del campo [Provincia], en criterio, escribiríamos:
 “Cáceres”


Si queremos buscar sólo coincidencias con una parte del valor deberemos usar el símbolo comodín, que es el asterisco, unido a la palabra Como. Así, para todas las provincias que empiecen por B escribiríamos:
Como “B*”


Ni que decir tiene que si el valor a buscar está en medio de la palabra utilizaríamos dos asteriscos, de manera que la expresión sería:
Como “*b*”


Filtros para campos numéricos
Para encontrar valores concretos, simplemente pondríamos ese valor.


Para encontrar valores que cumplan ciertas condiciones utilizaríamos los comparadores (mayor, menor, igual, distinto de). Por ejemplo:


Mayor que 10 ….      >10
Mayor o igual a 15… >=15
Menor que 3…         <3
Distinto de 9…         <>9
Entre 2 y 5…           >2 Y <5


Filtros para campos de fecha
Los campos de fecha deben ir acotados por el signo de la almohadilla (#). Para filtrarlos utilizaremos también los comparadores. Así, por ejemplo:


La fecha debe ser igual a 01/01/01:         =#01/01/01#
La fecha deber mayor que 10/10/10:       >#10/10/10#


Filtros de campos Sí/No
Este tipo de campos devuelve los valores Verdadero/Falso. Por ello, para filtrar sólo debemos escribir:


Verdadero
Falso


Combinaciones de filtro
Se pueden añadir varios criterios porque, como veréis, debajo de la línea Criterio: hay otra línea que pone o:


Así por ejemplo, si queremos sacar determinados valores numéricos, escribiríamos:


Criterio:     1
o:                3
o:                5


Algunos truquillos con filtros


Si queremos filtrar un campo fecha/hora a partir del día actual basta que utilicemos la expresión: Ahora(). Por ejemplo:


=Ahora()
<=Ahora()


Si queremos sacar los valores pares o impares debemos usar el operador MOD. El operador MOD nos devuelve el resto de una división. Si el valor es par, y si lo dividimos entre 2, el resto siempre será cero. Supongamos que el campo a filtrar se llama [Numero]. En sus criterios pondríamos:


Si queremos los pares:       [Numero] Mod 2 = 0
Si queremos los impares:    [Numero] Mod 2 <> 0


Si ya queremos “afinar” muchísimo con los filtros podemos recurrir al generador de expresiones. Para sacarlo nos situamos, en la columna cuyo dato queremos filtrar, sobre la línea criterio y hacemos click con el botón de la derecha. Seleccionamos la opción “Generar…” y se nos abrirá el generador de expresiones. Allí encontraremos una lista de funciones y constantes (entre otros) que nos permitirán ver de qué elementos disponemos para filtrar con más precisión:


Por ejemplo, dentro de funciones->Funciones incorporadas veremos una categorización, y dentro de cada categoría la función que podemos utilizar. Si tenemos dudas siempre nos queda la opción de, una vez seleccionado el elemento que queremos, pulsar la tecla F1, que nos mostrará la ayuda sobre esa función.


Campos calculados
En las consultas no sólo podemos operar con los campos que nos provienen de las tablas, sino que también podemos añadir nuevos campos para realizar operaciones. La estructura de construcción de un nuevo campo calculado es muy simple: el nombre del nuevo campo, seguido de dos puntos, y el cálculo que queremos realizar.


Un ejemplo muy simple: tenemos un campo, [Num1], y otro, [Num2], en el grid de la consulta. Son campos de tipo numérico. Queremos conseguir un nuevo campo que llamaremos [Suma] y que será la suma de los dos anteriores. Para conseguir esto nos ponemos en cualquier columna “vacía” del grid de la consulta y en la línea Campo: escribimos lo siguiente


Suma: [Num1] + [Num2]


Y eso es todo para conseguir el campo calculado. Es más, podemos seguir añadiendo nuevos campos que hagan referencia a los calculados. Siguiendo con el ejemplo anterior, lo que queremos en realidad es hallar la media aritmética de los números anteriores. Bastaría con ir a una nueva columna “vacía” y escribir lo siguiente:


MedArit: [Suma]/2


Truco (aplicable también para todos los campos): a veces el formato que adquiere el campo calculado (o el título del mismo) no es el que queremos. Para solucionar esto nos ponemos sobre el nombre del campo, en el grid de la consulta, y sacamos sus propiedades. Ahí podremos configurar, entre otros, el formato y el título (que será la cabecera de la columna cuando ejecutemos la consulta). Estas propiedades variarán según el tipo de campo que estemos modificando, y algunas opciones serán o no posibles de modificar también en función del tipo.


Truco: con un campo calculado también podemos crear un “valor constante”.

Imaginemos que tenemos una consulta con un campo [Num], y necesitamos que nos recoja los números pares, pero que además haya un campo que nos lo diga explícitamente. Para ello aplicamos el filtro para sacar sólo los números pares en los criterios de [Num] y añadimos un campo calculado, de manera que en el grid de la consulta, en una columna “vacía”, escribimos lo siguiente:


Tipo: “PAR”


Si ejecutamos la consulta veremos que ahora todos los registros tienen un nuevo campo que indica que el número es PAR.


Truco: podemos crear un campo calculado en función de una condición utilizando la función IIf (Si inmediato). La estructura de la función es muy simple:


IIf (condición; valor si verdadero; valor si falso)


Por ejemplo, si el campo [Nota] es mayor que 5 queremos que nos salga un campo [Calificacion] que diga APROBADO, y si no SUSPENDIDO. Para ello nos vamos a una columna vacía del grid y escribimos lo siguiente:


Calificacion: IIf([Nota]>=5;”APROBADO”;”FALSO”)


Se pueden anidar las condiciones, lo que complica un poco las cosas. Es decir, siguiendo con el ejemplo anterior, si queremos que si la nota es mayor de 9 salga MATRICULA, mayor que 5 y menor que 9 APROBADO e inferior a 5 SUSPENDIDO deberíamos escribir:


Calificacion: IIf([Nota]>9;”MATRICULA”;IIf([Nota]>=5;”APROBADO”;”SUSPENDIDO”))


CONSULTAS CON PARÁMETROS
En ocasiones nos puede interesar aplicar al momento un filtro que variará según nuestras necesidades. Para conseguir esto debemos crear una consulta parametrizada. La mecánica de las consultas parametrizadas es muy simple: realizamos una consulta de selección tal y como hemos explicado en el apartado correspondiente de este artículo y, en la línea de criterio, será cuando apliquemos los parámetros.


Los parámetros obligan a la consulta a solicitar información del usuario antes de ejecutarse, petición que realizan a través de un cuadro de diálogo. Para indicar que se trata de un parámetro debemos poner su expresión entre corchetes.


Podemos realizar una definición previa de los parámetros a través de la ventana de parámetros. Para ello hacemos click con el botón derecho sobre cualquier parte de la consulta (o también, en la cinta de opciones, click sobre “Parámetros” en el grupo de opciones “Mostrar u ocultar”) y seleccionamos la opción “Parámetros…”. Se nos abrirá la ventana de parámetros y allí podremos escribir el parámetro (entre corchetes) y definir su tipo. Personalmente (y es una opinión mía) os aconsejo utilizar esta opción si vais a utilizar muchos parámetros, para aportarnos información cuando revisemos la consulta en un momento posterior.


Utilizaremos dos ejemplos sobre situaciones que suelen ser las más usuales para este tipo de consultas.


Ejemplo 1: tenemos una consulta con un campo, [Nota], de tipo numérico, que recoge las notas de unos alumnos. A veces queremos ver los aprobados, otras veces queremos ver los suspendidos, otras veces queremos ver los que están en la “frontera” (los que han sacado entre un 4 y un 5), etc.


Para conseguir esto nos vamos, con la consulta en vista diseño, al campo [Nota], y en la línea de criterios escribimos lo siguiente:


>=[“Valor inferior”] Y <=[“Valor superior”]


Ahora, si ejecutamos la consulta, se nos solicitará el valor inferior y el valor superior de las notas que queremos consultar, y una vez hemos dado respuesta se nos mostrarán los resultados.


Ejemplo 2: queremos filtrar el campo [Fecha] para hallar los datos entre dos fechas. En la línea de criterios del campo [Fecha] escribimos lo siguiente:


>=[“¿Fecha_inferior?”] Y <=[“¿Fecha_inferior?”]


IMPORTANTE: en los parámetros no podemos utilizar palabras “reservadas”. Por ejemplo, la palabra Fecha es una palabra reservada, de ahí que haya unido esa palabra con la siguiente a través de un subguión.


El formato en el que debemos introducir la información es, en este caso, dd/mm/aa.


CONSULTAS EN CASCADA
La mecánica de las consultas en cascada es muy simple: se trata de realizar una consulta sobre una consulta sobre una consulta… y así sucesivamente.


En ocasiones es necesario recurrir a este tipo de consultas porque no podemos llegar directamente al resultado que queremos obtener a través de una sola consulta.


Dado que este tipo de consultas depende totalmente de la estructura de nuestra BD, no puedo poner más ideas “generales” sobre este punto.


CONSULTAS DE TABLAS DE REFERENCIAS CRUZADAS
Por decirlo de una manera un tanto “burda” (pero creo que muy clarificadora), una tabla de referencias cruzadas es como si nos creáramos una hoja de cálculo donde los encabezados de fila y de columna lo constituyen los valores de los propios campos de la consulta.


La idea que subyace en este tipo de consultas es poder comparar, de una manera fácil y “a primera vista”, información común que comparten dos tablas.


Así, los elementos que la caracterizan, de manera genérica, podemos decir que son: encabezados de fila, encabezados de columna y valores.


Parafraseando aquello de “una imagen vale más que mil palabras”, nosotros diremos que “un ejemplo vale más que mil palabras”, y por tanto os remito al ejemplo para poder comprobar su utilidad.


UN “GRAN” EJEMPLO
Para facilitar tanto la lectura como la ejecución, si queréis ir vosotros desarrollando el ejemplo, os remito aquí, donde os podréis bajar un pdf y un BD con el ejemplo desarrollado.


¡Que lo disfrutéis!
 
--- FIN DE LA PARTE PRIMERA ---


---IR A POR LA SEGUNDA---

 

Wednesday the 13th. Joomla 2.5 Templates. Neckkito's baby 2012 --- Hosted by: www.siliconproject.com.ar
Copyright 2012

©