Crear consultes a partir d'altres consultes

Fins ara quan treballàvem amb consultes ho fèiem a partir d’una taula o de diverses taules, entre les quals establíem relacions i seleccionàvem aquells registres que volíem recuperar.

En aquesta pràctica veurem que també es poden crear consultes a partir de consultes ja existents en la base de dades i si convé combinar taules i consultes en la creació de noves consultes.

Abans de crear noves consultes és important conèixer les variants que hi ha i actuar en conseqüència. Si volem fer consultes d'acció, convé primer fer la consulta de selecció, comprovar-ne el bon funcionament i després convertir-la en una consulta d'acció.

Seria una consulta basada en una altra consulta prèvia.

En concret les consultes d’actualització, ens permeten modificar dades d’una taula, les consultes de dades annexades ens serveixen per afegir registres a una taula , les consultes de creació de taula ens creen una taula completament nova i les consultes d’eliminació serveixen per eliminar registres de la taula seleccionada.

Partint de la base de dades biblioteca_m2.rar, veurem els exemples de creació de diverses consultes d’aquest tipus.


Creació i execució d’una consulta d’actualització.


Amb la base de dades oberta seleccionem en la barra d’objectes de l’esquerra Consultes, i fem clic en Crear una consulta nova en vista Disseny.

En el quadre Mostrar taula, seleccionem la taula Alumnes, i en la fila d'icones superior marquem Actualitzar com veiem en la figura,



Hem triat dos camps, Codi_alumne i curs, volem actualitzar els alumnes de la taula al nou curs que iniciarem i per fer-ho obrim el generador d’expressions, fent clic amb el botó dret del ratolí sobre la línia Actualitzar a …, i triant Generar, o fent clic sobre Generador a la barra superior.




Seleccionem la taula Alumnes i el registre curs, i afegim + 1, per incrementar el valor un curs. Tanquem amb acceptar i ens ofereix el missatge indicant que actualitzarem 26 registres. Hem de tenir present que aquesta acció no es pot desfer. Si convé, cal tenir una taula desada per possibles errors o revisions.

Després ens demana desar la nova consulta, un consell és posar-l’hi un nom que ens recordi del tipus de consulta que es tracta, per exemple, cac_increment_curs (consulta actualització increment de curs).

Veiem com queda desada en la finestra de consultes amb la seva icona de consulta d’actualització. Podem comprovar l’efecte en el camp curs de la taula Alumnes.



Creació i execució d’una consulta de dades annexades.


En el nostre exemple tenim una base de dades db1.accdb, amb una taula Llibres 2, que volem annexar a la taula Llibres de la base de dades biblioteca_m2.accdb.

En primer lloc haurem d'importar la taula Llibres 2 a la base de dades de treball.

Ho farem triant Dades externes > Access i se'ns obre el quadre de diàleg que ens permet examinar els arxius i seleccionar la base de dades on tenim els elements(taules, formularis, ..) que volen importar,



Una vegada hem seleccionat la base de dades que contè els elements a importar, triem la taula Llibres 2, en el diàleg següent,



Quan ja es disposa de la taula en la base de treball, iniciem el procediment de creació de la consulta de dades annexades:

1. En Vista Disseny, seleccionem Annexar en les eines de tipus de consulta, com es veu en la figura següent, en la qual hem afegit la taula Llibres 2, que és des d´on volem annexar dades a la taula Llibres.

2. S’obre el quadre de diàleg que ens demana la taula a la qual volem annexar les dades, en el nostre exemple Llibres,



3. Podem marcar tots els camps de dades que volem incloure en la taula de destinació, fent clic sobre el quadre de la taula seleccionada.

Els noms de camp han de coincidir per fer la transferència automàtica per part del programa. En cas de no ser iguals, cal establir les correspondències entre els camps de la taula d’origen i de destinació.

4. Podem incloure criteris en els diversos camps per seleccionar quins registres incloure en la taula de destinació. En el nostre cas no ho hem fet perquè volem annexar tots els registres de Llibres 2.

5. Executem la consulta i ens apareix un missatge informant-nos del nombre de registres que anem a annexar.



6. Acceptem l’operació fent "Sí" en la barra del missatge. Els registres s’han annexat a la taula Llibres.

Aquest tipus de consultes no ens permeten cometre infraccions sobre les claus principals. Si haguéssim volgut afegir registres que dupliquessin algun valor d’una clau principal ens hauria donat un missatge d’error i no ens hagués permès fer la consulta.


Creació i execució d’una consulta de creació de taula.


Amb la base de dades oberta seleccionem Crear i dins d'aquesta finestra Disseny de consulta.

1. S'obre el quadre amb la Llista de taules i seleccionem, les taules Llibres i Llengua.


2. En el quadre de disseny hem situat les taules d’origen de les dades Llibres, Llengua, Editor i Autors, i hem seleccionat els camps que volem que apareguin en els registres de la nova taula.

3. Hem afegit en Criteris el codi de Llengua, en el nostre cas “an” (anglès).



4. Executem la consulta i ens apareix el missatge dels registres que s’afegiran a la nova taula.



5. Acceptem fent clic en per finalitzar el procés.

Si volem repetir l’execució d’aquesta consulta, Access ens avisa que en primer lloc eliminarà la taula creada anteriorment i realitzarà la nova creació de taula amb el mateix nom.

Podem observar el resultat del procés amb la nova taula en la finestra d’objectes Taules i un detall dels registres transferits a la nova taula,



Creació i execució d’una consulta d’eliminació.


La Consulta d'eliminació, el que fa és esborrar els registres d'una taula que compleixen una condició concreta.

Amb la base de dades biblioteca_m2.accbd, treballarem sobre una consulta nova que li donarem el nom: Consulta eliminacions

Aquesta consulta la fem de nou, partint de zero. Es tracta d'afegir al disseny de la consulta només la taula Llibres_anglès creada amb anterioritat.

En aquesta consulta, baixem tots els camps a la part inferior de la pantalla de la consulta ( ho podem fer clicant en l’asterisc de la taula Llibres) i afegint aquells camps pels quals volem filtrar ( Llengua i Autors).

Inicialment fem una consulta de selecció que ens mostri tots els llibres que tinguin un codi d'autor més gran que 100 (”>100”). Comprovem que funciona i que ens selecciona un total de 10 registres dels 25 que té la taula.

Ara només ens falta convertir aquesta consulta en una d'eliminació:

Anem a la barra d’eines de la pantalla de Consultes, i triem , com tenim en la imatge i marquem els criteris “an” i >100 en els camps assenyalats,



A la pantalla següent, i com sempre que hi hagi una acció que modifica, afegeix o esborra dades, ens demana conformitat.

En aquest cas ens adverteix que s'esborraran 10 registres de la taula.



Si confirmem l'acció s'hauran esborrat 10 registres de la taula i ho podrem observar obrint i comprovant els registres que queden.


Creació d’una consulta basada en altres consultes de selecció anteriors.


Per estudiar aquest tipus de consultes obrirem la base de dades de treball biblioteca_m2.accbd, en el Panel de navegació marcarem Consultes i anirem a Crear una Consulta en vista Disseny,



En obrir-se el quadre de diàleg, tenim 3 pestanyes amb les opcions Taules, Consultes i ambdues.

Farem un exemple amb Consultes i seleccionem dues de les consultes que tenim creades Llibres_autor_editor i Préstecs Consulta.



Establim la relació entre el camp Títol de la consulta Llibres_autor_editor i el camp Títol de la consulta Préstecs Consulta. Seleccionem els camps Títol, Codi_préstec i Data_préstec, i creem la nova consulta, l’anomenem Consulta registre préstecs i la desem.

Com a exemple de la possibilitat de modificar les consultes farem un canvi a la creada anteriorment. Substituirem en el seu disseny la consulta Llibres_autor_editor per la taula Llibres.

Obrim la consulta anterior en vista Disseny, fem clic sobre la consulta Llibres_autor_editor i la suprimirem. Tor seguit, amb el diàleg Mostra taula afegirem la taula Llibres.

Ara cal establir la relació entre el camp Registre de la taula llibres i el camp Llibre de la consulta Préstecs Consulta, tal com es pot observar en la figura que tenim tot seguit i en la qual podem comprovar les característiques de la relació. Un cop fets aquests canvis tornem a desar la consulta amb el mateix nom i comprovem que el resultat és el mateix.



Aquest canvi ens permet explicar una de les qüestions de simplicitat en el treball amb consultes basades en diverses taules o diverses consultes. No es fàcil actualitzar certs camps en aquest tipus de consultes.

No es poden modificar els camps d’unió del costat “1” de les relacions 1 a n , si no tenim activada l’opció Actualitzar en cascada de la integritat referencial. Tampoc ho podrem fer en el costat n de la relació si hem modificat dades del costat “1”.

Per aquest motiu si podem treballar amb les taules més senzilles com hem fet en aquest exemple, facilitarem el treball i el rendiment de la base i evitarem problemes.