Esercizietto SQL

di il
2 risposte

Esercizietto SQL

Ciao a tutti
sono uno studente di economia e "purtroppo" devo accingermi a sostenere l'esame di informatica generale comprendente linguaggio C e SQL
Dico purtroppo perchè la parte teorica la trovo molto interessante e utile per avere una panoramica generale sul mondo dell'informatica ma nella parte pratica sto riscontrando non poche difficoltà(oltretutto non riesco a vederne l'utilità,in particolare per quanto riguarda il C,essendo trattata cosi' in modo generale senza nessuna reale applicazione pratica nel nostro campo)
Fatta questa piccola premessa volevo sottoporvi un piccolo esercizietto trovato in una dispensa di cui dispongo delle soluzioni(e di cui non garantisco la correttezza)

-->Dati i seguenti schemi di relazione con le rispettive istanze
*Aziende(Piva,Denominazione)
Piva Denominazione
111 Parmalat
222 Barilla

*Servizi(Piva,IDS,Costo)
Piva IDS Costo
111 1 20
111 2 20
222 1 10
111 3 10
222 2 10

-->Stabilire il risultato della seguente query:
Select Denominazione, COUNT(*)
From Aziende, (SELECT DISTINCT Costo FROM Servizi) T
Group by Aziende.Denominazione
-->Soluzione:
PARMALAT 2
BARILLA 2

-->Dubbi:
Innanzitutto cosa vuole dire T?(intersezione?,unione?)
Count(*)significa che devo prendere tutte le Denominazioni trovate nella tabella Aziende giusto?
Perchè nella soluzione è riportato l'IDS e non il costo?(l'esercizio chiede select distinct costo)
come mai il punto tra aziende e denominazione?

ps:con Access si puo' verificare la correttezza degli esercizi in sql?

Grazie a tutti per l'eventuale collaborazione!

2 Risposte

  • Re: Esercizietto SQL

    T è l'alias dato alla sottoquery (SELECT DISTINCT Costo FROM Servizi). Per tradurtelo è un altro nome per chiamere tutto quello che c'è tra parentesi; vedila come una tabella il cui contenuto è dato dalla query SELECT DISTINCT Costo FROM Servizi.
    Nel tuo caso quella tabelle sarebbe così:
    COSTO
    10
    20

    il count(*) fa il conteggio dei record per ogni denominazione (raggruppa per denominazione);

    nella FROM ci sono 2 tabelle aziande e la sottoquery.
    Aziende ha 2 record e la sottoquery (vedi sopra) ha 2 record.
    Per come è strutturata la query viene fatto il prodotto cartesiano tra le 2 tabelle ottenendo:

    Denominazione Costo
    Pamalat 10
    Parmalat 20
    Barilla 10
    Barilla 20

    Poi raggruppa per denominazione e conta i record (count*)
    quindi:
    Denominazione Count(*)
    Parmalat 2
    Barilla 2

    Ecco come si arriva a quel risultato.
    Quei numeri che vedi (2) non è IDS ma il count(*)

    Guarda, con sincerità studia meglio la parte si SQL perché ti mancano le basi.
    Ti consiglio vivamente di fartelo piacere perché ti servirà moltissimo anche in economia.
    E' anche piacevole devi solo smarcarti certi dubbi.
    Leggiti qualcosa di introduttivo sull'argomento. Prova a cercare su internet "semplicemente database" (spero non mi uccidano per questo consiglio) nel tuo caso secondo me è perfetto.
  • Re: Esercizietto SQL

    friendsql01 ha scritto:


    T è l'alias dato alla sottoquery (SELECT DISTINCT Costo FROM Servizi). Per tradurtelo è un altro nome per chiamere tutto quello che c'è tra parentesi; vedila come una tabella il cui contenuto è dato dalla query SELECT DISTINCT Costo FROM Servizi.
    Nel tuo caso quella tabelle sarebbe così:
    COSTO
    10
    20

    il count(*) fa il conteggio dei record per ogni denominazione (raggruppa per denominazione);

    nella FROM ci sono 2 tabelle aziande e la sottoquery.
    Aziende ha 2 record e la sottoquery (vedi sopra) ha 2 record.
    Per come è strutturata la query viene fatto il prodotto cartesiano tra le 2 tabelle ottenendo:

    Denominazione Costo
    Pamalat 10
    Parmalat 20
    Barilla 10
    Barilla 20

    Poi raggruppa per denominazione e conta i record (count*)
    quindi:
    Denominazione Count(*)
    Parmalat 2
    Barilla 2

    Ecco come si arriva a quel risultato.
    Quei numeri che vedi (2) non è IDS ma il count(*)

    Guarda, con sincerità studia meglio la parte si SQL perché ti mancano le basi.
    Ti consiglio vivamente di fartelo piacere perché ti servirà moltissimo anche in economia.
    E' anche piacevole devi solo smarcarti certi dubbi.
    Leggiti qualcosa di introduttivo sull'argomento. Prova a cercare su internet "semplicemente database" (spero non mi uccidano per questo consiglio) nel tuo caso secondo me è perfetto.

    ok perfetto,grazie
Devi accedere o registrarti per scrivere nel forum
2 risposte