Recette
#13 |
|
Février 2011 |
Le problème Il est très proche du précédent:
|
Local Council |
County |
Region |
CAMPIONE D'ITALIA |
COMO |
LOMBARDIA |
CAPRAIA ISOLA |
LIVORNO |
TOSCANA |
CARLOFORTE |
CAGLIARI |
SARDEGNA |
FAVIGNANA |
TRAPANI |
SICILIA |
ISOLA DEL GIGLIO |
GROSSETO |
TOSCANA |
ISOLE TREMITI |
FOGGIA |
PUGLIA |
LA MADDALENA |
SASSARI |
SARDEGNA |
LAMPEDUSA E LINOSA |
AGRIGENTO |
SICILIA |
LIPARI |
MESSINA |
SICILIA |
PANTELLERIA |
TRAPANI |
SICILIA |
PONZA |
LATINA |
LAZIO |
PROCIDA |
NAPOLI |
CAMPANIA |
USTICA |
PALERMO |
SICILIA |
VENTOTENE |
LATINA |
LAZIO |
note: la plus part des Local
Councils de cette liste sont de petites îles.
à l'exception de
Campione d'Italia, qui est entièrement enclavé par la
Suisse.
SELECT lc1.lc_name AS
"Local Council", |
Rien de bien nouveau: c'est plus ou moins la même chose que pour
l'exemple précédent
A quelques différences près:
On a utilisé NOT ST_Disjoint() pour remplacer ST_Touches.
et on a utilisé LEFT JOIN pour la deuxième instance de la table local_councils (AS lc2): on est ainsi sûr d’insérer dans les résultats tous les Local Councils provenant du terme de gauche (lc1) , même si celui ci n'a pas de voisins
la clause GROUP BY lc1.lc_id permet de regrouper les Local Councils.
puis, la fonction Count(lc2.lc_id)
retourne le nombre de voisin de chaque Local Council:
ainsi, la
valeur ZERO
indique un Local Council isolé.
Enfin, nous utilisons la clause HAVING afin d'exclure les Local Council non isolés.
note: la clause
HAVING ne doit pas
être confondue avec la clause WHERE.
elles
ne sont similaires qu'en apparence:
WHERE
évalue immédiatement si une ligne candidat doit être
insérée dans les résultats ou non.
Ainsi, une ligne non
sélectionnée par WHERE
est totalement ignorée, et ne peu être utilisée plus tard.
de son coté, HAVING
est évalué une fois que le résultat est défini.
Ainsi, HAVING est
très utile pour les opérations de post-processing (filtrage
a posteriori), comme dans notre exemple.
on va
simplement réduire nos résultats en ne sélectionnant que les
îles isolées.
|
Author: Alessandro Furieri a.furieri@lqt.it |
This work is licensed under the Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license. |
|
|
|
Permission is granted to copy, distribute and/or modify this
document under the terms of the |