Într-o bază de date se memorează informaţii despre ţările lumii. Entitatea corespunzătoare este:
Drapelul va conţine o succesiune de culori specifice ţării, separate prin virgulă şi eventual o scurtă descriere. Ex: roşu, galben, albastru pe verticală sau roşu, alb, verde pe orizontală.
Țările pot avea una sau mai multe limbi oficiale. Dacă sunt mai multe se scriu separate prin virgulă.
Cerințe:
a) Construiţi tabela şi apoi populaţi-o cu înregistrări relevante pentru cerinţele următoare:
b) Să se afişeze în ordine alfabetică ţările care au pe drapel culoarea roşie (roşu).
c) Să se afişeze ţările care au o suprafaţă cuprinsă între suprafaţa Bulgariei şi suprafaţa Germaniei (ţara, capitala, suprafaţa şi densitatea populaţiei). Utilizaţi un alias pentru coloana calculată.
d) Care sunt ţările care au populaţia mai mare decât populaţia din cel puţin o (oricare) ţară (oricare) în care limba oficială este engleza (una dintre limbile oficiale)?
Rezolvare
a) Construiţi tabela şi apoi populaţi-o cu înregistrări relevante pentru cerinţele următoare:
Structura tabelului TARA pentru fiecare câmp:
- id - cheie primară, Data Type: AutoNumber
- nume - Data Type: Text
proprietăţi modificate
Field Size: 30
Required: Yes
- drapel - Data Type: Text
proprietăţi modificate
Field Size: 80
Required: Yes
- suprafata - Data Type: Number
Required: Yes
- populatie - Data Type: Number
Required: Yes
- limba_oficiala - Data Type: Text
proprietăţi modificate
Field Size: 50
Required: Yes
- capitala - Data Type: Text
proprietăţi modificate
Field Size: 30
Required: Yes
Se introduc informaţii în tabel.
b) Să se afişeze în ordine alfabetică ţările care au pe drapel culoarea roşie (roşu).
Se creează o interogare care preia date din tabelul TARA.
Tările se ordonează alfabetic (Ascending), iar criteriul de selecţie al acestora este culoarea roşie din câmpul drapel (Like "*rosu*" - se folosesc şi caracterele speciale *, vezi pagina referitoare la interogări).
c) Să se afişeze ţările care au o suprafaţă cuprinsă între suprafaţa Bulgariei şi suprafaţa Germaniei (ţara, capitala, suprafaţa şi densitatea populaţiei). Utilizaţi un alias pentru coloana calculată.
Se creează o interogare care preia date din tabelul TARA.
Criteriul de selecţie pentru a afişa doar ţările care au suprafaţa cuprinsă între suprafaţa Bulgariei şi cea a Germaniei este >=110912 And <=357022.
Densitatea populaţiei se calculează împărţind populaţia la suprafaţă. Am folosit şi funcţia Round pentru ca rezultatul afişat să aibă maxim două zecimale.
d) Care sunt ţările care au populaţia mai mare decât populaţia din cel puţin o (oricare) ţară (oricare) în care limba oficială este engleza (una dintre limbile oficiale)?
Altfel zis, ni se cere să afişăm ţările care au populaţia mai mare decât maximul populaţiei din ţările în care o limbă oficială este engleza.
O variantă de rezolvare ar fi prin doi paşi:
1. Mai întâi realizarea unei interogări care să selecteze ţara în care engleza este limbă oficială şi care are populaţia cea mai mare.
Această interogare (SQL) se poate copia apoi ca şi criteriu în interogarea cerută mai sus. Pentru a o copia, se deschide fereastra care afişează interogarea SQL (în zona tabelului click pe butonul din dreapta a mouse-ului şi alegerea SQL View din meniul rapid).
SELECT Max(tara.populatie) FROM tara WHERE (((tara.limba_oficiala) Like "*engleza*"))
2. Crearea unei alte interogări, în care se vor selecta câmpurile nume şi populaţie.
Criteriul de selecţie pentru populaţie este
>SELECT Max(tara.populatie) FROM tara WHERE (((tara.limba_oficiala) Like "*engleza*"))
(semnul "mai mare ca", urmat de interogarea SQL copiată)
Am ataşat mai jos fişierul rezolvat în format .mdb.