On Wed, 14 Feb 2018 17:03:44 +0100, nino formica wrote:
Alcuni amici a cui sto cercando di insegnare i primi rudimenti per scrivere
delle query SpatiaLite, mi hanno chiesto se esiste la possibilità di farlo
con qualche query builder grafico (per capirci simile a quello che c'è in
MS Access).
In effetti non ci avevo pensato prima, ma effettivamente ciò eviterebbe a
molti utenti basici di evitarsi la sintassi SQL un po' astrusa.
ciao Nino,
sono personalmente convinto che qualsiasi query builder grafico
"stile MS Access" alla lunga sia fortemente controproducente,
e cerco di spiegare perche'.
qualsiasi wizard GUI, per quanto sofisticato possa essere,
finisce inevitabilmente col ricondurre qualsiasi problema
a poche situazioni standard "pre-masticate" in modo
abbastanza rigido, che vanno verosimilmente bene in molti
casi generici ma che lasciano del tutto scoperte tante
altre situazioni meno frequenti e/o piu' complesse che
pure si riscontano abbastanza di frequente.
viceversa il linguaggio SQL (perche' non dobbiamo mai
dimenticare che e' un vero e proprio linguaggio di
programmazione, per quanto atipico) offre una potenza
ed una flessibilita' praticamente illimitate.
incapsulare SQL dentro ad un rigido guscio GUI finisce
quindi inevitabilmente per castrare molte delle
funzionalita' piu' avanzate e sofisticate, che finiscono
semplicemente per essere ignorate dato che sarebbe
troppo complesso supportarle adeguatemente in forma
grafica.
io non definirei la sintassi SQL "un po' astrusa", perche'
e' oggetivamente molto semplice, utilizza giusto una decina
di comandi e presenta una struttura del tutto logica,
assolutamente regolare e consistente noche' facilmente
intuitiva e predicibile.
a mio modesto parere molti utenti (basic e non solo) incontrano
grosse difficolta' nel loro l'approccio ad SQL principalmente
per i seguenti motivi:
1) SQL e' un vero e proprio linguaggio di programmazione;
per scrivere una query SQL efficiente e magari non banale
serve sicuramente una "testa da programmatore", cosa che
evidentemente e' alla portata di molti ma non di tutti.
2) SQL e' un linguagio atipico, visto che si basa sul
modello dichiarativo invece che sul piu' comune modello
imperativo.
detta in parole semplici: nei linguaggi imperativi (C/C++,
Java, Python, PHP etc) il programmatore deve minuziosamente
indicare una serie di "azioni" che eseguite in sequenza
producono il risultato desiderato.
viceversa in un linguaggio dichiarativo (come SQL) il
programmatore deve semplicemente descrivere il risultato
atteso, specificando tutti i vincoli e le condizioni
restrittive a cui deve essere soggetto.
a partire da questi elementi sara' poi il sw stesso a
determinare automaticamente la corretta sequenza di "azioni"
che produce il risultato richiesto nel modo piu' efficiente
ed ottimizzato.
purtroppo capita molto spesso che sviluppatori in possesso
di una discreta familiarita' con altri linguaggi continuano
a ragionare in modo imperativo anche quando devono scrivere
una query SQL, e questo li porta inevitabilmente fuori strada.
3) dato che SQL e' un linguaggio, richiede un certo livello
di conoscenze e di competenze specifiche per potere essere
utilizzato con qualche soddisfazione.
nulla di particolarmente complicato, visto che per acquisire
una discreta padronanza di SQL bastano abbondantemente un paio
di giornate di studio accompagnato da tanti test pratici,
magari seguendo un buon tutorial.
purtroppo invece moltissimi utenti sono assolutamente convinti
che SQL si possa usare "ad orecchio", procedendo ad occhio e
croce senza mai degnarsi di consultare uno straccio di
documentazione (peraltro largamente diffusa e facilmente
consultabile).
3.bis) per potere usare con qualche successo lo Spatial SQL
serve ovviamente una discreta competenza generale relativa
a "SQL liscio", visto che la parte "spatial" e' semplicemente
un'estesione che si appoggia sulla comune sintassi base.
noto purtroppo che molti utenti GIS tendono invece a
concentrare la propria attenzione esclusivamente sulla
parte specificamente "spatial", mentre trascurano gli
aspetti "non spatial" ritenendoli di scarso interesse.
3.ter) ogni DBMS ha la sua specifica variante dialettale
di SQL, con le sue tipicita' ed idiosincrasie.
chi gia' padroneggia un qualsiasi dialetto SQL incontrera'
ben poche difficolta' a familiarizzare in tempi brevissimi
con un dialetto differente, ma sicuramente serve almeno un
pizzico di studio della documentazione specifica.
passaggio che invece molti tendono a saltare a pie' pari.
conclusione: SQL non e' di per se un linguaggio particolarmente
ostico. diventa terribilmente ostico quando si pretende di
utilizzarlo senza avere una preparazione adeguata, almeno a
livello basic.
la soluzione in genere e' semplice ed alla portata di tutti
con poco sforzo: basta semplicemente studiare prima di agire.
cosa peraltro non particolarmente impegnativa.
tornando a bomba sui query builder grafici, chiudo riferendo
un mio aneddoto personale.
svariati anni or sono mi sono avventurato ad utilizzare i tools
grafici di MS Access per fare una query abbastanza complicata che
coinvolgeva una decina di tavole messe in JOIN e che richiedeva
delle condizioni di aggregazione abbastanza complesse.
ho sudato pazientemente per un'intera mattinata per riuscire a
tracciare tutti i collegamenti grafici necessari spuntando le
varie caselle etc, fino ad ottenere una schermata assolutamente
illeggibile che pareva una ragnatela tutta arruffata, e non sono
neppure riuscito ad ottenere i risultati corretti.
a quel punto ho attivato il pannello SQL e mi sono scritto
a mano una query SQL di alcune decine di righe; in poco
meno di mezz'ora ho finalmente risolto il mio problema 
On Wed, 14 Feb 2018 17:05:48 +0100, Luca Delucchi wrote:
2018-02-14 17:03 GMT+01:00 nino formica <ninofor60@gmail.com>:
Io credo che non esiste, ma magari mi sbaglio e vi giro la domanda.
penso che spatialite gui abbia qualcosa del genere, forse non permette
di creare query molto complesse ma per imparare dovrebbe essere
sufficiente
On Wed, 14 Feb 2018 17:12:25 +0100, Totò Fiandaca wrote:
In spatialite_gui, come accennato da Luca, esiste il query/view composer
(file->advanced) che semplifica parecchio la costruzione delle query e
delle view.
confermo quanto detto da Luca e Toto'; il query builder
di spatialite_gui e' decisamente spartano, ma consente
di auto-generare molte query SQL dei tipi piu' banali
e comuni. ed e' anche un discreto strumento "didattico"
per facilitare l'apprendimento dei primi rudimenti di SQL.
ciao Sandro