Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Quote Originariamente inviata da optime Visualizza il messaggio
    scusa, ma che problemi hai? in tema, fuori tema, cosa vuoi che ti dica? se la domanda è (cito da Jamie04): "Vorrei sapere che ragionamenti fate quando componente query così complesse", la risposta "non sono query complesse" è appropriata, per cui, senza fare giri e rigiri, stando semplicemente con i piedi per terra, si studia un po' di SQL e si risolve. E per dimostrare che NON è una query complessa, ho scritto quelle due righe che mi sono venute in mente al volo.

    Per me discussione chiusa
    Dimenticavo...forse non è complessa per te ora che hai un buon livello di esperienza, ma lo è certamente per me che sono alle prime armi. Indubbiamente ve ne saranno di molto più complesse da elaborare, ma ti assicuro che la definizione non è mia ed anche nel mio libro query di questo tipo vengono chiamate "complesse".

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    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!

  3. #3
    1. Cos'è una Join dovresti saperlo mentre quella di includere delle selezioni tipiche della Where è una scorciatoia che non tutti sanno (e abbatte un bel po' i tempi di esecuzione)
    2. Cosa fa una Group By dovresti saperlo (ari )
    3. E' meglio dire cosa si vuole contare per a) precisione b) velocità c) NON contare eventuali NULL (ma in questo caso non ne hai)

    Un'ultima cosa: il titolo dice di non usare Having... ma dove lo si sarebbe dovuto usare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Quote Originariamente inviata da optime Visualizza il messaggio
    1. Cos'è una Join dovresti saperlo mentre quella di includere delle selezioni tipiche della Where è una scorciatoia che non tutti sanno (e abbatte un bel po' i tempi di esecuzione)
    Infatti non la sapevo, non ve ne era riferimento né nel libro né nelle slide e nemmeno negli esempi. Quindi non me la potevo sognare

    2. Cosa fa una Group By dovresti saperlo (ari )
    sì, come ho detto partiziona la tabella secondo un valore comune

    3. E' meglio dire cosa si vuole contare per a) precisione b) velocità c) NON contare eventuali NULL (ma in questo caso non ne hai)
    count(*) avrebbe contato il numero di righe, ma se fai count(id) non conti ugualmente il numero di righe? o conti solo le righe che hanno un id valido?

    Un'ultima cosa: il titolo dice di non usare Having... ma dove lo si sarebbe dovuto usare?
    La mia idea è che il prof avesse in mente che la soluzione che più facilmente sarebbe venuta in mente a tutti è di usare un group by seguito da un having per filtrare tramite il range di età. Immagino. Comunque sono vincoli che mette solo per complicarci un po' la vita e costringerci a pensare in maniera differente.

  5. #5

  6. #6
    la HAVING si usa per filtrare il risultato di una aggregazione http://www.w3schools.com/sql/sql_having.asp (tipo, le città con più di n abbonamenti)

    se l'idea del prof è di usare la HAVING per filtrare il range di età cià, è meglio che non dico niente

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Quote Originariamente inviata da optime Visualizza il messaggio
    la HAVING si usa per filtrare il risultato di una aggregazione http://www.w3schools.com/sql/sql_having.asp (tipo, le città con più di n abbonamenti)

    se l'idea del prof è di usare la HAVING per filtrare il range di età cià, è meglio che non dico niente
    è solo una mia idea, non so se sia davvero così, cioè a me è venuto in mente questo uso, ma può darsi che lui avesse in mente qualcos'altro, anzi è molto probabile che sia così
    Ultima modifica di Jamie04; 17-07-2016 a 20:00

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    ho cancellato la domanda, ho capito

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.