Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [mysql] query un po contorta

    Salve, sto studiando sql e sto provando ad effettuare la seguente query ma non riesco a capire come strutturarla:

    avendo 2 tabelle:

    TABELLA OPERE:
    codice - titolo - genere - anno - museo - artista - valore

    TABELLA MUSEI:
    nome - citta

    QUERY: Determinare i musei le cui opere hanno un valore complessivo maggiore di 1 miliardo.

    Ovviamente bisogna effettuare una select su MUSEI ed effettuare la JOIN con OPERE, ma non riesco a capire come fare per farmi ritornare il valore complessivo delle opere per ogni museo...

    avevo pensato di selezionare in una query annidata tutti i musei col comando:
    SELECT museo FROM opere HAVING SUM(valore) > 1000000000

    per estrapolarmi i nomi dei musei che hanno un valore maggiore del miliardo e poi unire la query con un'altra select che mi ritorna solo il nome del museo col conteggio che mi serve insieme al nome.

    un bel casino di query e non riesco a capire come strutturarla :S

    grazie mille

  2. #2
    select musei.nome, count(opere.codice)
    from musei, opere
    where opere.museo=musei.nome
    and opere.valore >= (SELECT museo FROM opere HAVING SUM(valore) > 1000000000)

    ----

    qualcosa del genere?

  3. #3
    mhmmm no, a me alla fine serve la lista dei musei con la rispettiva somma delle opere
    ad esempio se ho louvre che ha come somma 3mld, museo1 che ha somma 4 mld e museo2 che ha come somma 50000, la query mi deve ritornare:

    louvre --- 3'000'000'000
    museo1 --- 4'000'000'000

    in pratica devo selezionare i musei che hanno un valore totale delle opere maggiore di 1 miliardo e la relativa somma come colonna temporanea, un bel casino

    mannaggia domani ho l'esame e non ho idea di come si facciano le query di questo tipo

  4. #4
    cosi :

    codice:
    SELECT museo, sum(valore) as somma
    FROM Opere
    GROUP BY(museo)
    HAVING somma > 1000000000
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  5. #5
    si, ci ero riuscito anche io stamattina con questa query:

    SELECT museo, SUM( valore ) as valoretotale, citta
    FROM opere
    INNER JOIN musei ON opere.museo=musei.nome
    GROUP BY museo
    HAVING SUM( valore ) >=1000000000

    mi serviva anche la colonna città che stava dentro un'altra tabella ed ho risolto con una join

    grazie mille comunque per l'aiuto

  6. #6
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

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 © 2025 vBulletin Solutions, Inc. All rights reserved.