Esercizio di Algebra relazionale - SQL

di il
7 risposte

Esercizio di Algebra relazionale - SQL

Buon giorno . Voglio esercitarmi un po' con l'algebra relazionale e SQL e ho scelto questo esercizio.
Mi aiutate a risolvere questi esercizi ? Non chiedo di risolvermi i problemi ma soltanto di seguirmi nei ragionamenti .Grazie
n.b. ( Per ora ho provato a risolvere il primo esercizio per capire se sono su la strada giusta )

Prodotti(Codice, Descrizione, Marca)
Vendite(Prodotto,Mese, Anno, Quantitàa)

con vincolo di integritàa referenziale fra Prodotto e la relazione Prodotti
Con riferimento a tale base di dati (supponendo che i valori delle quantitàa siano sempre maggiori di zero e cioè che i mesi senza vendite non siano riportati):

1. formulare in SQL l'interrogazione che trova codice, descrizione e marca per ogni prodotto che
abbia almeno una vendita nell'anno 2007


?{Codice, Descrizione, Marca } ( Prodotti ) ? ( Prodotto=descrizione ) ( Quantità >1 ) ? (Anno > 2007 ) ( Vendite )

( Mi dite per favore se la prima interrogazione e' corretta ? )


2. formulare in SQL l'interrogazione che trova, per ogni prodotto (basta mostrare il codice), la
quantitàa venduta nel 2007 (cioé la somma delle quantitàa vendute nei mesi del 2007); mostrare
due formulazioni, una che ignora i prodotti non venduti nel 2007 e l'altra che li include, ponendo
il valore pari a 0;


3. formulare in SQL l'interrogazione che trova i prodotti per i quali la quantitàa venduta nel 2007 e
stata maggiore di quella venduta nel 2006; mostrare tutte le informazioni sul prodotto e le due
quantitàa


4. formulare in SQL l'interrogazione che trova i codici dei prodotti che hanno almeno una vendita
nell'anno 2007 e nessuna nel 2006

7 Risposte

  • Re: Esercizio di Algebra relazionale - SQL

    Gli operatori relazionali (?, ?, ecc) e la relativa sintassi non sono univoche: libri diversi usano una sintassi diverse.

    Quindi, per iniziare, usa la sintassi SQL, che e' piu' o meno standard, almeno per le query piu; semplici.

    Secondo: la tua query e' sbagliata!

    Che c'azzecca confrontare Prodotto con descrizione?

    RAGIONA!!!!
  • Re: Esercizio di Algebra relazionale - SQL

    In SQL diventa :

    SELECT Codice,Descrizione ,Marca
    FROM PRODOTTI , VENDITE
    WHERE ( Anno = 2007 AND Quantità' > 1 )

    Forse hai ragione ... in questo caso non e' necessario utilizzare il Teta Join .
    Pero' mi chiedo e se voglio relazionare le due tabelle quali attributi scelgo ?
    Secondo me Descrizione potrebbe relazionarsi con Prodotto . Pero' il dubbio mi viene.
    Forse e' piu' giusto relazionare la chiave primaria Codice di Prodotti con la chiave primaria Prodotto di Vendite.

    Pensandoci bene . Per esempio il prodotto= "mela" no e' molto compatibile con la descrizione che puo' essere Descrizione = "Golden" oppure "Fuji" .
  • Re: Esercizio di Algebra relazionale - SQL

    Credo di aver sbagliato di nuovo . Il teta join ci vuole anche per la prima interrogazione .
    La prima interrogazione dovrebbe essere scritta in questo modo .

    SELECT Codice, Descrizione ,Marca
    FROM PRODOTTI JOIN VENDITE ON Prodotto=Codice
    WHERE ( Anno = "2007" AND Quantita > 1 )
  • Re: Esercizio di Algebra relazionale - SQL

    LA SECONDA INTERROGAZIONE L'HO IMPOSTATA IN QUESTO MODO:

    SELECT Codice , SUM (Quantita)
    FROM PRODOTTI JOIN VENDITE ON Prodotto=Codice
    WHERE ( Mese >=01 AND Mese <= 12 ) AND Anno="2007"

    Secondo voi questa interrogazione e' corretta ? Ho qualche dubbio su come ho interrogato il mese Manca ancora la parte per suddividere i prodotti non venduti nel 2007 e quelli venduti ..

    Con questa istruzione posso inserire i valori NULLI nella tabella .
    INSERT INTO Prodotti VALUES ( 'NULL' , 'NULL' ,'NULL' )

    Cosa ne pensate ?
  • Re: Esercizio di Algebra relazionale - SQL

    Alcune domande specifiche sulla condizione WHERE...

    1° Il Campo ANNO lo consideri Testo...? Perchè...?
     Anno="2007"
    2° Vuoi escludere GENNAIO dal criterio...?
    WHERE ( Mese >01 AND Mese <= 12 )

    Se invece vuoi includere tutti i Mesi... a cosa serve inserirli...? Nel 2007, come in tutti gli altri anni i mesi sono da 1÷12 quindi non serve il criterio MESE per estrarre i movimenti 2007, basta Anno...
    3° Dando per scontato che il Mese sia NUMERICO... credo ti sia chiaro che [01] è diverso da 1... e il numero di Mese di Gennaio è 1 non 01...

    Vedi tu...
  • Re: Esercizio di Algebra relazionale - SQL

    Grazie Alex per avermi risposto .
    Prima della tua risposta avevo corretto il > con >= .
    Effettivamente basta considerare l'anno 2007 numerico e non alfanumerico.
    In Access c'e' anche il valore DATA pero' poi e' piu' difficile fare l'interrogazione .

    Alex , mi sarebbe molto d'aiuto se ogni tanto dai un'occhiata a questo post e mi continui a dare qualche dritta per correggere i miei errori , sperando di non disturbarti .
    A settembre ho l'esame di Basi di dati e ancora ho molte lagune . Grazie ancora
  • Re: Esercizio di Algebra relazionale - SQL

    FabioPOl ha scritto:


    ...
    In Access c'e' anche il valore DATA pero' poi e' piu' difficile fare l'interrogazione .
    Non comprendo il senso di questa affermazione...
    Il Valore Data() restituisce la data corrente... cosa può avere a che fare con l'interrogazione in questo caso...?
    Non capisco.

    FabioPOl ha scritto:


    Alex , mi sarebbe molto d'aiuto se ogni tanto dai un'occhiata a questo post e mi continui a dare qualche dritta per correggere i miei errori , sperando di non disturbarti .
    A settembre ho l'esame di Basi di dati e ancora ho molte lagune . Grazie ancora
    Innanzitutto questo 3D si chiude chiuso l'argomento, quindi se hai altri quesiti non usare questo, ma aprine uno dedicato per argomento... per il resto, direi che non approvo richieste fatte così... cosa significa che si dovrebbe dare un'occhiata al 3D per aiutarti...?
    Se ci saranno domande alle quali il Forum potrà dare corso, verrà fatto come sempre, non serve chiedere un trattamento speciale... è la volta che ottieni il contrario...

    In bocca al lupo.
Devi accedere o registrarti per scrivere nel forum
7 risposte