Per marino51: Fondamentalmente io devo risolvere l'esercizio di un compito, se fosse una situazione reale, allora come dici tu sarebbe utile poter guardare al futuro, ma qui non serve a niente e temo anche che non verrebbe ben giudicato dal prof. Comunque grazie per avermi fornito una spiegazione esaustiva che prende in considerazione strade alternative, piuttosto che la query risolutiva
Riguardo la "pesantezza" delle viste, forse dirò una cazzata, ma mi è sembrato di capire che se è vero che non replicano i dati fisicamente è pur vero che ogni volta che si accede ad una vista viene impiegata la ram necessaria a replicare i dati. Mi sbaglio?
Per optime: la tua query mi dà errore, il "limit 1" l'ho messo alla fine invece che nella select e non mi dà più errore. Il tuo triplo join (il qualificatore "inner" si può omettere cmq) è in pratica l'equivalente, ovviamente in termini di risultato, della vista unione?
Vediamo se ho compreso l'esecuzione della tua query:
1° viene effettuato il prodotto cartesiano delle 3 tabelle su quei valori comuni prendendo solo gli utenti che hanno quel range di età (non sapevo si potessero mettere quel genere di clausole nel join)
2° si partiziona la tabella risultante secondo i valori dell'attributo città
3° si contano le righe di ogni raggruppamento...ma qui non capisco perché specificare count(a.id) e non semplicemente count(*) e non capisco nemmeno perché il count è sia nella select che alla fine della query. Potresti spiegarmi?
Grazie ancora!


Rispondi quotando
mentre quella di includere delle selezioni tipiche della Where è una scorciatoia che non tutti sanno (e abbatte un bel po' i tempi di esecuzione)


