Está en la página 1de 5

CONSULTAS (II)1

Vamos a desarrollar una aplicación para practicar los


siguientes tipos de consultas:

· Consultas de acción
o Consulta de creación de tabla

o Consulta de actualización
o Consulta de eliminación

o Consulta de datos anexados


· Consultas SQL

Este ejemplo es la continuación del ejemplo dedicado a las Consultas (I), ejemplo que podréis
encontrar aquí. La BD de ejemplo pues será la misma que la que se utilizó para Consultas (I),
a la cual iremos añadiendo los elementos necesarios para desarrollar el presente ejemplo.

TABLAS NECESARIAS
Tabla TProfesores:

La rellenamos con algunos datos. Si queréis seguir fidedignamente la BD de ejemplo os pongo


aquí los registros de la tabla:

CONSULTAS DE ACCIÓN: CONSULTA DE CREACIÓN DE


TABLA
Vamos a crear una tabla a través de una consulta de creación de tabla. Vamos a interrelacionar
los profesores con los alumnos, de manera que podamos ver qué profesor corresponde a cada
alumno.
1.- Creamos una consulta y la llamamos CProfAl. Seleccionamos las tablas TProfesores,
TAlumnos, TMatriculas y TCursos.

1 La BD de ejemplo os la podéis bajar aquí

1
Visítame en http://siliconproject.com.ar/neckkito/
2.- Establecemos las relaciones entre tablas, de manera que:

 De la tabla TAlumnos arrastramos el campo [IdAl] hasta el


campo [IdAlumno] de TMatriculas.

 De la tabla TProfesores arrastramos el campo [IdCurso]


hasta el campo [IdCurso] de TCursos.

 De la tabla TMatriculas arrastramos el campo [IdCurso]


hasta el campo [IdCur] de TCursos

Ya tenemos las relaciones creadas, lo que nos permitirá enlazar los


datos. Ahora vamos a añadir los campos necesarios en el grid de la
consulta.

 De TCursos añadimos [NomCurso]

 De TProfesores añadimos [Nombre] y [Apellidos]

 De TAlumnos añadimos [Nombre] y [Apellidos]

3.- Si ejecutamos ahora la consulta veremos los resultados y podremos comprobar que son los
esperados. Volvemos a la consulta en vista diseño y convertimos la consulta en una consulta
de creación de tabla.
4.- Nos aparecerá una ventana donde nos solicita el nombre de la tabla. Llamaremos a nuestra
futura tabla TProfAl.
Fijaos que podemos crear la nueva tabla tanto en la BD en la que estamos operando como en
otra BD que tengamos en nuestro ordenador.
5.- Si ejecutamos ahora la consulta nos saldrá un mensaje de advertencia (común en todas las
consultas de acción, aunque de diferente redacción según el tipo de consulta de acción que
ejecutemos).

6.- Si vamos ahora a las tablas veremos que nos ha aparecido una nueva tabla según la hemos
configurado en la consulta. Además, si nos vamos a ver todas las consultas veremos que el
icono que identifica nuestra consulta de acción es diferente a las de los que identifican las
consultas de selección.

CONSULTAS DE ACCIÓN: CONSULTA DE ACTUALIZACIÓN


La consulta de actualización realiza, como su nombre indica, una actualización de los datos.

Dado que para este ejemplo no nos hemos metido en la definición de relaciones entre tabla
(ventana relaciones) no se nos van a actualizar los campos en cascada. Ello implica que las
actualizaciones que podamos hacer se aplicarán exclusivamente a las tablas que impliquemos
en el proceso.

1.- Para realizar este ejemplo vamos a copiar la tabla TCursos y vamos a pegarla con el
nombre de TCursosAct (copiamos y pegamos estructura y datos).

La idea es el curso de Word, por un error, no era Word, sino que era Writer. Vamos a actualizar
nuestra tabla con la información (evidentemente para este ejemplo actualizaremos un registro,
lo que hubiéramos podido hacer a mano, pero, ¿y si tuviéramos 5000 registros para
actualizar?).

2.- Creamos una consulta de selección sobre la tabla TCursosAct incluyendo sólo el campo

2
Visítame en http://siliconproject.com.ar/neckkito/
[NomCurso]. En la línea de criterios filtramos el curso que nos interesa, que en este caso es
“Word”. Guardamos la consulta como CActWord

3.- Convertimos esa consulta en una consulta de


actualización. Veremos que ahora nos aparece una línea
más que indica “Actualizar a”. En esa línea, en la columna
del campo [NomCurso], escribimos:

“Writer”
4.- Si ejecutamos la consulta nos saldrá un warning. Aceptamos y
podremos comprobar que ahora la tabla TCursosAct tiene el curso
correcto.

Quiero llamaros la atención sobre el hecho de que las consultas de acción (todas) no permiten
la acción deshacer. Es decir, que hay que andarse con mucho cuidado a la hora de ejecutarlas
porque, si cometemos algún error, la única solución será tener un backup de nuestra BD.

CONSULTAS DE ACCIÓN: CONSULTAS DE ELIMINACIÓN


¡Vamos a hacer de “destroyers”! Vamos a “cargarnos” un par de registros. Antes de eso vamos
a “preparar el campo” para ver los maravillosos efectos de una eliminación terapéutica.

Copiamos la tabla TMatriculas y la pegamos como TMatriculasBorrar (copiamos estructura y


datos). Añadimos unos cuantos registros a esta tabla, pero dejamos el campo [IdCurso] en
blanco. Vamos a suponer que la persona, el día que dio de alta esos registros, aún no había
despertado, y se olvidó de rellenar completamente el formulario.

1.- Creamos una consulta de selección. La guardamos como CMatriculasBorrar. La tabla origen
será TMatriculasBorrar y añadiremos dos campos (bastaría con añadir sólo uno, [IdCurso]) que
serán [IdMat] e [IdCurso]
2.- En la columna del campo [IdCurso] escribimos, en la línea de Criterios:, lo siguiente:

Es Nulo
3.- Si ahora ejecutamos la consulta veremos todos los registros que hemos dado de alta pero
que no tienen curso. Ya hemos comprobado que la consulta devuelve la información que
nosotros queríamos.

4.- Convertimos la consulta en una consulta de eliminación. Si ahora la ejecutamos, después


de aceptar el warning, la consulta nos borrará todos aquellos registros que estaban en blanco.
Lo podremos comprobar abriendo TMatriculasBorrar.

CONSULTAS DE ACCIÓN: CONSULTA DE DATOS ANEXADOS


Imaginemos que queremos dar un premio a las personas que han sacado las tres mejores
notas, contando todos los exámenes realizados (Examen1, 2 y 3), e independientemente del
curso en que se hayan matriculado. ¿Cuál es el “problema”? Que tenemos las notas de los
exámenes repartidos en diferentes campos de la tabla TNotas.

Vamos a arreglarlo para poder sacar esa información. Ello nos obligará a utilizar una consulta
de creación de tabla y dos consultas de datos anexados. Además, aprovecharemos el ejemplo
para enseñar un truco con una consulta de selección.
1.- Creamos una consulta de selección sobre las tablas Tnotas y Talumnos. La guardamos

3
Visítame en http://siliconproject.com.ar/neckkito/
como CnotasMejores1.
2.- Debería habernos salido ya relacionados los campos
[IdAlumnoNota] de Tnotas e [IdAl] de Talumnos. Si no nos
ha salido la relación la creamos nosotros arrastrando el
primer campo sobre el segundo.
3.- Arrastramos al grid de la consulta los campos [Nombre]
y [Apellidos] de Talumnos y el campo [Examen1].
4.- Convertimos esa consulta en una consulta de creación de tabla.
Cuando nos pida el nombre de la tabla la llamamos TnotasMejores.
5.- Ejecutamos la consulta. Ya tendremos nuestra tabla creada.

6.- Copiamos CnotasMejores1 y la pegamos como CnotasMejores2


7.- Abrimos CnotasMejores2 en vista diseño y cambiamos el campo [Examen1] por [Examen2]

8.- Convertimos la consulta en una consulta de datos anexados. Nos debería salir por defecto
“Anexar a” TnotasMejores (si no nos sale seleccionamos esta tabla).

9.- Veremos que en el grid de la consulta aparece una nueva línea, “Anexar a:”. Como los
campos [Nombre] y [Apellidos] son coincidentes con los de la tabla Access ya ha dado por
supuesto que irán anexados a los mismos. Nosotros debemos decirle que [Examen2] se
anexará al campo [Examen1]. Guardamos los cambios. Si ahora ejecutamos la consulta se nos
anexarán a TnotasMejores los datos de los segundos exámenes.
10.- Copiamos CnotasMejores2 y la pegamos como CnotasMejores3. Abrimos esta última en
vista diseño y cambiamos [Examen2] por [Examen3], y le decimos que queremos anexar
[Examen3] a [Examen1]. Ejecutamos la consulta y se nos anexarán los terceros exámenes a
nuestra tabla.
11.- Si ahora abrimos la tabla TnotasMejores y ordenamos el campo [Examen1] por orden
descendente veremos cuáles son las tres mejores notas y qué alumnos las han obtenido.
---

12.- Vamos a ver un pequeño truco con una consulta de selección. Creamos una consulta de
selección sobre la tabla TnotasMejores y la guardamos como Cnotas3Mejores.

13. Añadimos todos los campos de la tabla al grid de la consulta.


14. En el campo [Examen1] le indicamos que la ordenación debe ser DESCENDENTE

15. Si ahora nos fijamos en la cinta de opciones veremos que hay un grupo de botones que se
denomina “Configuración de consultas”. Allí veremos que hay un botón que dice “Devuelve:
Todo”. Nosotros, como sólo queremos las 3 mejores, borramos la opción “Todo” y en su lugar
escribimos un tres (3), de manera que lo que aparezca sea “Devuelve: 3”.

16.- Si ahora ejecutamos la consulta veremos sólo las tres mejores.


Os recuerdo que, para este ejemplo, antes de ejecutar esta consulta de selección previamente
se deben ejecutar las tres consultas de acción anteriores para obtener los datos actualizados
(por si se han realizado modificaciones).

CONSULTAS SQL: CONSULTA DE UNIÓN


Nuestra/o jefa/e quiere entregar una felicitación navideña personalizada a todos los alumnos y

4
Visítame en http://siliconproject.com.ar/neckkito/
a todos los profesores de nuestra academia. Vamos a realizar una consulta de unión para
tenerlos todos en una sola tabla.

1.- Creamos una nueva consulta, pero no añadimos ninguna


tabla ni consulta. La guardamos como CUnion.

2.- Situamos la consulta en vista SQL haciendo click sobre


el botón correspondiente.

3.- Escribimos lo siguiente en lenguaje SQL para lograr


nuestra consulta de unión:

SELECT [TAlumnos].[Nombre], [TAlumnos].[Apellidos] FROM [TAlumnos]

UNION SELECT [TProfesores].[Nombre], [TProfesores].[Apellidos] FROM [TProfesores];


4.- Si ahora ejecutamos esa consulta veremos como los tenemos reunidos a todos en una sola
“tabla”.

CONSULTAS SQL: CONSULTAS DE PASO A TRAVÉS


Dadas las características de este tipo de consulta es imposible desarrollar un ejemplo sobre la
misma. Os remito a la teoría si queréis saber un poco más sobre la misma.

CONSULTAS SQL: CONSULTAS DE DEFINICIÓN DE DATOS


Vamos a crear una nueva tabla a través de una consulta de definición de datos. Nuestra nueva
tabla se llamará TBoletinDado y nos recogerá los siguientes campos:
[IdBol] -> Numérico y clave principal

[IdAlumno] -> Numérico


[FechaEntrega] -> Fecha/hora

1.- Creamos una nueva consulta en vista diseño. No le añadimos ninguna tabla o consulta. La
guardamos con el nombre CBoletinDado.
2.- Pulsamos el botón “Definición de datos” del grupo de la cinta de opciones “Tipo de
consulta”. Se nos pondrá la consulta en vista SQL

3.- Escribimos lo siguiente:


CREATE TABLE TBoletinDado ([IdBol] Integer, [IdAlumno] Integer, [FechaEntrega] Date)

4.- Si ejecutamos esa consulta veremos cómo nos crea nuestra nueva tabla.
Como final comentaros que si la tabla ya existe el comportamiento de la consulta es lanzar un
mensaje de advertencia e interrumpir su ejecución, para no borrar la tabla existente.
---

Y eso es todo. Ahora ya deberíais ser unos “profesionales” de las consultas ;)

5
Visítame en http://siliconproject.com.ar/neckkito/

También podría gustarte