Esercizio di trasformazione Algebra Rel in SQL

di il
13 risposte

Esercizio di trasformazione Algebra Rel in SQL

Buon giorno . Approfitto ancora dell'efficienza di questo sito e delle persone che lo condividono. Chiedo di aiutarmi a risolvere un altro esercizio di algebra relazionale .
Date due tabelle Album e Vendite , relazionate da Album. Codice e Vendite. Album

Album
Codice Titolo Cantante


Vendite
Album Anno Copievendute

la domanda e' la seguente :
----------------------------------------------------------------------------------------------
5. Trovare codice e titolo degli album che, da quando sono usciti, hanno venduto piu
di 10.000 copie ogni anno.
-----------------------------------------------------------------------------------------------
In algebra relazionale si puo' tradurre nel seguente modo :

p Codice,Titolo(sCopievendute > 10000 (Album)) - pCodice,Titolo(sCopievendute =10000 (Album))

Ho provato a tradurlo in SQL Access in questo modo :

SELECT DISTINCT Codice , Titolo
FROM Vendite X1 , Album
WHERE NOT EXISTS
( SELECT * FROM Vendite AS X2 , Album
WHERE Album = Codice AND ( X2.Copievendute) > 10000 AND (X1.Copievendute) <= 10000)

pero' in risultano non rispetta le mie aspettative . Evidenzia tutti i codici e tutti i titoli .
Non capisco dove sbaglio . Ringrazio chi mi aiuta .

13 Risposte

  • Re: Esercizio di trasformazione Algebra Rel in SQL

    Innanzitutto devi RAGGRUPPARE per ALBUM, ANNO e SOMMARE il campo [Copievendute].
    A quel punto devi mettere >10000 nel criterio...

    Prova a creare la tua Query in Access e vedi...
  • Re: Esercizio di trasformazione Algebra Rel in SQL

    Grazie Alex .
    Vorrei procedere in questo modo : Mettere un SUM Copievendute nella select iniziale
    Poi con inner join raggruppare per ANNO e per ALBUM e mettere l'istruzione GROUP by.
    pero' ho mille dubbi !! .
  • Re: Esercizio di trasformazione Algebra Rel in SQL

    Hai Access oppure stiamo parlando solo di TEORIA...?
    Se hai Access predisponi 2 Tabelle, riempile con un po di dati e gioca con il QueriesBuilder(QBE) e vedi cosa salta fuori...
    Ti assicuro che anche facendo prove ed esperimenti pericolosi non esplode nulla.
  • Re: Esercizio di trasformazione Algebra Rel in SQL

    Si ho Access e le tabelle le ho già' create e sono Album e Vendite .

    Quando provo a lanciare la query , perdo il controllo e mi perdo completamente .
    Questo e' il risultato della Query:

    Codice Titolo

    1 Miguel
    6 La donna Riccia
    7 Cuori agitati
    8 Arrivederci
    56 Tra te e il mare

    ------------------------------------------------------------------------------
    Album
    Codice Titolo Cantante
    1 Miguel Dalida
    6 La donna Riccia Domenico Modugno
    7 Cuori agitati Eros Ramazzotti
    8 Arrivederci Venditti
    9 Miguel Dalida


    Vendite
    Album Anno Copievendute
    1 1967 100
    2 1965 100
    3 1989 200
    4 2010 22
    5 1987 500
  • Re: Esercizio di trasformazione Algebra Rel in SQL

    Ipotizzando di avere DATI nelle 2 Tabelle COERENTI, ed i tuoi mi lasciano perplesso...

    Tabella [Album]
    con Campo Codice(PK)
    
    Codice	Titolo	Cantante
    1	 Miguel	Dalida
    2	La donna Riccia	Modugno
    3	Cuori agitati	Ramazzotti
    4	 Arrivederci	Venditti
    5	Tra te e il mare	Pausini
    Tabella [Vendite]
    Chiave Primaria MultiCampo(Codice e Anno)
    
    Codice	Anno	CopieVendute
    1	1950	90
    1	1951	100
    1	1952	200
    1	1953	80
    2	1990	70
    2	1991	150
    3	1995	120
    3	1996	130
    4	1960	90
    4	1961	100
    5	1990	120
    Se eseguo la Query sotto in cui ho messo >100 per fare un test...:
    
    SELECT Vendite.Codice, 
                Vendite.Anno, 
                Sum(Vendite.CopieVendute) AS SommaDiCopieVendute, 
                Album.Titolo
    FROM Album INNER JOIN Vendite ON Album.Codice = Vendite.Codice
    GROUP BY Vendite.Codice, Vendite.Anno, Album.Titolo
    HAVING (((Sum(Vendite.CopieVendute))>=100));
    Ottengo
    
    Codice	Anno	SommaDiCopieVendute	Titolo
    1	1951	100	Miguel
    1	1952	200	Miguel
    2	1991	150	La donna Riccia
    3	1995	120	Cuori agitati
    3	1996	130	Cuori agitati
    4	1961	100	Arrivederci
    5	1990	120   Tra te e il mare
    Ti torna...?
  • Re: Esercizio di trasformazione Algebra Rel in SQL

    Molto bene Alex . Mi torna .

    Mi piacerebbe pero' arrivarci da solo a queste conclusioni .

    Purtroppo la pappa pronta non aiuta poi a risolvere esercizi piu' difficili .

    Ti ringrazio ancora e spero di riuscire ad arrivare ai tuoi stessi livelli .
  • Re: Esercizio di trasformazione Algebra Rel in SQL

    Alex , Scusami ti ho risposto che il programma ancora non lo avevo provato .
    Devo dirti che l'ho provato pero' c'e' un problema , mi chiede :
    immettere valore parametro Vendite.Codice .
    la struttura delle tabelle mi sembra giusta .
    Chiave primaria su tabella Vendita -> Codice e chiavi primarie tabella Album --> Album e Anno.

    Non capisco perchè mi chiede di inserire Vendite. Codice e' come se non legge il FROM.
  • Re: Esercizio di trasformazione Algebra Rel in SQL

    Si , ho capito abbiamo il nome degli attributi diversi codice invece di Album .
    Tutto OK . grazie
  • Re: Esercizio di trasformazione Algebra Rel in SQL

    Alex ti rompo ancora un po' le scatole perché sto riuscendo a sciogliere dei nodi che mi porto dietro da tempo .

    Proseguendo con il successivo esercizio che dice :

    6. Trovare, per ciascun album, il numero complessivo di vendite e la media delle vendite
    annuali.

    Dovrei trovare le ennuple che hanno lo stesso anno e verificare anche che abbiano lo stesso Titolo e poi fare la media . Nel programma gia' fatto basta aggiungere dei controlli all'istruzione HAVING ???
  • Re: Esercizio di trasformazione Algebra Rel in SQL

    A me sembrano varie richieste di risoluzione di compiti a casa. Mi sembra chiaro ed evidente che le domande dei tuoi esercizi servono a giocare in vari modi sulle espressioni che in Access fanno capo al comando Totali. Devi fare varie prove da solo. Soprattutto prova a leggere tutto di tutto sulle query (vedi guida in linea).
  • Re: Esercizio di trasformazione Algebra Rel in SQL

    Grazie per i suggerimenti . Non trovo la Guida in linea per studiare le Query .
    Potresti indicarmi meglio dov'è e' questa Guida in linea ? Un'altra domanda : esiste una app su Android dove posso fare questi programmini in Access o simili ?
    Saluti
  • Re: Esercizio di trasformazione Algebra Rel in SQL

    La guida in linea, come tutte le applicazioni, si ottiene cliccando su un tasto in alto con il "punto interrogativo" (?). Puoi anche spingere il tasto F1. Quindi digita nella ricerca "Query". Puoi fare anche una ricerca su internet digitando "Access Query" e troverai una moltitudine di link.
  • Re: Esercizio di trasformazione Algebra Rel in SQL

    Buon giorno .
    E' da questa mattina che provo a modificare una Query ma ancora non ci sono .
    Mi sarebbe sufficiente sapere quale istruzione aggiungere o quale modificare.
    E' L'ultimo esercizio che sto' svolgendo . Abbiate pietà' . Grazie
    L'esercizio chiede :

    7. Trovare il titolo degli album che, per ciascun anno, hanno venduto piu copie di tutti.




    Con questa Query sono riuscito a selezionarmi il Titolo e MAXCOPIEVENDUTE .

    SELECT Titolo , MAX(Vendite.Copievendute) AS MAXCOPIEVENDUTE
    FROM Album INNER JOIN Vendite ON (Album.Codice = Vendite.Album)
    GROUP BY Titolo

    Come faccio a far uscire soltanto il Titolo con il valore piu' alto , in questo caso ??
    Arrivederci 50000

    Titolo MAXCOPIEVENDUTE

    Miguel 100
    Arrivederci 50000
    Cuori agitati 222
    La donna Riccia 3400
    Miguel 2
Devi accedere o registrarti per scrivere nel forum
13 risposte