Sie sind auf Seite 1von 5

CONSULTAS (II)1

Vamos a desarrollar una aplicacin para practicar los


siguientes tipos de consultas:

Consultas de accin
o Consulta de creacin de tabla

o Consulta de actualizacin
o Consulta de eliminacin

o Consulta de datos anexados


Consultas SQL

Este ejemplo es la continuacin del ejemplo dedicado a las Consultas (I), ejemplo que podris
encontrar aqu. La BD de ejemplo pues ser la misma que la que se utiliz para Consultas (I),
a la cual iremos aadiendo los elementos necesarios para desarrollar el presente ejemplo.

TABLAS NECESARIAS
Tabla TProfesores:

La rellenamos con algunos datos. Si queris seguir fidedignamente la BD de ejemplo os pongo


aqu los registros de la tabla:

CONSULTAS DE ACCIN: CONSULTA DE CREACIN DE


TABLA
Vamos a crear una tabla a travs de una consulta de creacin 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 podis bajar aqu

1
Vistame 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 aadir los campos necesarios en el grid de la
consulta.

De TCursos aadimos [NomCurso]


De TProfesores aadimos [Nombre] y [Apellidos]

De TAlumnos aadimos [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 diseo y convertimos la consulta en una consulta
de creacin 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 (comn en todas las
consultas de accin, aunque de diferente redaccin segn el tipo de consulta de accin que
ejecutemos).
6.- Si vamos ahora a las tablas veremos que nos ha aparecido una nueva tabla segn la hemos
configurado en la consulta. Adems, si nos vamos a ver todas las consultas veremos que el
icono que identifica nuestra consulta de accin es diferente a las de los que identifican las
consultas de seleccin.

CONSULTAS DE ACCIN: CONSULTA DE ACTUALIZACIN


La consulta de actualizacin realiza, como su nombre indica, una actualizacin de los datos.
Dado que para este ejemplo no nos hemos metido en la definicin 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 aplicarn 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 informacin (evidentemente para este ejemplo actualizaremos un registro,
lo que hubiramos podido hacer a mano, pero, y si tuviramos 5000 registros para
actualizar?).
2.- Creamos una consulta de seleccin sobre la tabla TCursosAct incluyendo slo el campo

2
Vistame en http://siliconproject.com.ar/neckkito/
[NomCurso]. En la lnea 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


actualizacin. Veremos que ahora nos aparece una lnea
ms que indica Actualizar a. En esa lnea, 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 atencin sobre el hecho de que las consultas de accin (todas) no permiten
la accin deshacer. Es decir, que hay que andarse con mucho cuidado a la hora de ejecutarlas
porque, si cometemos algn error, la nica solucin ser tener un backup de nuestra BD.

CONSULTAS DE ACCIN: CONSULTAS DE ELIMINACIN


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 eliminacin teraputica.

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


datos). Aadimos unos cuantos registros a esta tabla, pero dejamos el campo [IdCurso] en
blanco. Vamos a suponer que la persona, el da que dio de alta esos registros, an no haba
despertado, y se olvid de rellenar completamente el formulario.

1.- Creamos una consulta de seleccin. La guardamos como CMatriculasBorrar. La tabla origen
ser TMatriculasBorrar y aadiremos dos campos (bastara con aadir slo uno, [IdCurso]) que
sern [IdMat] e [IdCurso]
2.- En la columna del campo [IdCurso] escribimos, en la lnea 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 informacin que
nosotros queramos.

4.- Convertimos la consulta en una consulta de eliminacin. Si ahora la ejecutamos, despus


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

CONSULTAS DE ACCIN: CONSULTA DE DATOS ANEXADOS


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

Vamos a arreglarlo para poder sacar esa informacin. Ello nos obligar a utilizar una consulta
de creacin de tabla y dos consultas de datos anexados. Adems, aprovecharemos el ejemplo
para ensear un truco con una consulta de seleccin.
1.- Creamos una consulta de seleccin sobre las tablas Tnotas y Talumnos. La guardamos

3
Vistame en http://siliconproject.com.ar/neckkito/
como CnotasMejores1.
2.- Debera habernos salido ya relacionados los campos
[IdAlumnoNota] de Tnotas e [IdAl] de Talumnos. Si no nos
ha salido la relacin 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 creacin 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 diseo y cambiamos el campo [Examen1] por [Examen2]

8.- Convertimos la consulta en una consulta de datos anexados. Nos debera 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 lnea, Anexar a:. Como los
campos [Nombre] y [Apellidos] son coincidentes con los de la tabla Access ya ha dado por
supuesto que irn anexados a los mismos. Nosotros debemos decirle que [Examen2] se
anexar al campo [Examen1]. Guardamos los cambios. Si ahora ejecutamos la consulta se nos
anexarn a TnotasMejores los datos de los segundos exmenes.
10.- Copiamos CnotasMejores2 y la pegamos como CnotasMejores3. Abrimos esta ltima en
vista diseo y cambiamos [Examen2] por [Examen3], y le decimos que queremos anexar
[Examen3] a [Examen1]. Ejecutamos la consulta y se nos anexarn los terceros exmenes a
nuestra tabla.
11.- Si ahora abrimos la tabla TnotasMejores y ordenamos el campo [Examen1] por orden
descendente veremos cules son las tres mejores notas y qu alumnos las han obtenido.
---

12.- Vamos a ver un pequeo truco con una consulta de seleccin. Creamos una consulta de
seleccin sobre la tabla TnotasMejores y la guardamos como Cnotas3Mejores.

13. Aadimos todos los campos de la tabla al grid de la consulta.


14. En el campo [Examen1] le indicamos que la ordenacin debe ser DESCENDENTE

15. Si ahora nos fijamos en la cinta de opciones veremos que hay un grupo de botones que se
denomina Configuracin de consultas. All veremos que hay un botn que dice Devuelve:
Todo. Nosotros, como slo queremos las 3 mejores, borramos la opcin 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 slo las tres mejores.


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

CONSULTAS SQL: CONSULTA DE UNIN


Nuestra/o jefa/e quiere entregar una felicitacin navidea personalizada a todos los alumnos y

4
Vistame en http://siliconproject.com.ar/neckkito/
a todos los profesores de nuestra academia. Vamos a realizar una consulta de unin para
tenerlos todos en una sola tabla.

1.- Creamos una nueva consulta, pero no aadimos ninguna


tabla ni consulta. La guardamos como CUnion.

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


el botn correspondiente.

3.- Escribimos lo siguiente en lenguaje SQL para lograr


nuestra consulta de unin:

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 TRAVS


Dadas las caractersticas de este tipo de consulta es imposible desarrollar un ejemplo sobre la
misma. Os remito a la teora si queris saber un poco ms sobre la misma.

CONSULTAS SQL: CONSULTAS DE DEFINICIN DE DATOS


Vamos a crear una nueva tabla a travs de una consulta de definicin de datos. Nuestra nueva
tabla se llamar TBoletinDado y nos recoger los siguientes campos:
[IdBol] -> Numrico y clave principal

[IdAlumno] -> Numrico


[FechaEntrega] -> Fecha/hora

1.- Creamos una nueva consulta en vista diseo. No le aadimos ninguna tabla o consulta. La
guardamos con el nombre CBoletinDado.
2.- Pulsamos el botn Definicin 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 cmo 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 ejecucin, para no borrar la tabla existente.
---

Y eso es todo. Ahora ya deberais ser unos profesionales de las consultas ;)

5
Vistame en http://siliconproject.com.ar/neckkito/

Das könnte Ihnen auch gefallen