Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442

    [MySQL] Ancora query...

    Dato lo schema:
    UTENTE(Codice, Nome, Cognome, Età)
    TEATRO(Nome, Città, Capienza)
    ABBONAMENTO(ID, CodUtente, NomeTeatro, Costo)
    Con vincoli di integrità referenziale:
    ABBONAMENTO.CodUtente->UTENTE.Codice
    ABBONAMENTO.NomeTeatro->TEATRO.Nome

    Scrivere in SQL la query che determina: nome e città dei teatri che hanno
    un numero di abbonati pari alla propria capienza.

    Inizialmente avevo pensato di risolvere così:
    codice:
    select nome, citta
    from teatro
    where capienza = any (select nometeatro, count(*) as numero 
    from abbonamento 
    group by nometeatro);
    La logica era: se conto quante volte compare il nome di un teatro negli abbonamenti so quanti abbonamenti sono stati emessi, poi mi basta confrontare questo numero con la capienza del teatro.
    Mi sembrava corretto ma poi mi sono resa conto che se due teatri hanno la stessa capienza ma uno non compare mai negli abbonamenti viene estratto ugualmente. Quindi ho corretto così:

    codice:
    select distinct nome, citta 
    from teatro join abbonamento on nome=nometeatro
    where capienza = any (select count(*) from abbonamento group by nometeatro);
    Il distinct l'ho messo poi perché mi sono accorta che nel risultato il nome del teatro compariva tante volte quanti sono gli abbonamenti (perché?).
    Come vi sembra?
    Grazie!

  2. #2
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541
    Select Nome, Citta From Teatri Where capienza=(Select COUN(ID) From ABBONAMENTI WHERE NomeTeatro=Nome)

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    La tua query è più efficiente della mia

  4. #4
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541
    Quote Originariamente inviata da Jamie04 Visualizza il messaggio
    La tua query è più efficiente della mia
    l'importante è che dia quello che ti serve

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.