|
La
sintassi vista finora del comando SELECT permette interrogazioni molto
semplici, spesso si cercano dati in maniera molto più complessa, come
quando sono presenti relazioni fra tabelle (delle relazioni tra
tabelle parleremo più avanti su queste pagine).
Vediamo
ora qualche clausola WHERE un po' più complessa:
nella parte che segue il WHERE del comando SELECT può essere inserita
una qualsiasi espressione booleana (cioè una qualsiasi espressione
che, risolta, dia come risultato uno dei due valori booleani (Vero,
Falso)) che sia calcolabile, ovviamente nel risultato della query
verranno inserite tutte e sole le righe della tabella che rendono vera
l'espressione che segue la clausola WHERE (Where Condition).
Es:
Sia la tabella Dipendenti:
| Cognome |
Nome |
Età |
Data_assunzione |
| Rossi |
Mario |
40 |
10/5/1995 |
| Verdi |
Giorgina |
20 |
1/3/1999 |
| Bianchi |
Paolo |
50 |
1/6/1975 |
| Gialli |
Loredana |
35 |
24/9/1989 |
| Rossi |
Giorgio |
46 |
15/7/1979 |
La
query SELECT * FROM Dipendenti WHERE True ritorna tutta la
tabella, mentre la query SELECT * FROM Dipendenti WHERE False
non ritorna nulla.
La
query SELECT Cognome FROM Dipendenti WHERE Età>35 AND
(Cognome='Rossi' OR Nome Like 'Paolo') AND Età<>46
ritorna solamente le seguenti righe:
| Cognome |
Nome |
Età |
Data_assunzione |
| Rossi |
Mario |
40 |
10/5/1995 |
| Bianchi |
Paolo |
50 |
1/6/1975 |
Dopo
la where condition possono essere presenti ancora alcuni
comandi:
GROUP BY
HAVING
ORDER BY {Campo1, Campo2, ...} [ASC | DESC]
Il
più semplice è ovviamente ORDER BY, che serve per ordinare una
tabella rispetto ad uno o più campi, le parole chiave opzionali in
fondo significano il tipo di ordinamento: ASC ( o niente) sta per
ascendente, DESC sta per discendente.
Vediamo subito con un esempio come funziona:
Es:
Con la tabella dell'esempio precedente, la query
SELECT
* FROM Dipendenti WHERE Età<=40 ORDER BY Cognome DESC
ritorna
| Cognome |
Nome |
Età |
Data_assunzione |
| Verdi |
Giorgina |
20 |
1/3/1999 |
| Rossi |
Mario |
40 |
10/5/1995 |
| Gialli |
Loredana |
35 |
24/9/1989 |
Se
invece non avessimo messo alcunché in fondo o avessimo messo ASC la
tabella sarebbe stata ordinata in ordine crescente rispetto al
Cognome.
Si
può ordinare anche rispetto a più campi, i campi che vengono dopo il
primo sono usati per l'ordinamento nel caso in cui i valori del primo
sono uguali:
SELECT
* FROM Dipendenti ORDER BY Cognome, Età
| Cognome |
Nome |
Età |
Data_assunzione |
| Bianchi |
Paolo |
50 |
1/6/1975 |
| Gialli |
Loredana |
35 |
24/9/1989 |
| Rossi |
Mario |
40 |
10/5/1995 |
| Rossi |
Giorgio |
46 |
15/7/1979 |
| Verdi |
Giorgina |
20 |
1/3/1999 |
|