PDA

View Full Version : DRAMMA: SQL??


Vanon
10-05-2010, 16:40
:D lo so che è una richiesta strana ma io ci provo lo stesso:sofico:

domani ho un esame in università di informatica, nulla di troppo difficile tranne per le domande sull'SQL che non avevo manco mai sentito nominare:stordita: facendo i test simulati qualcosa ho fatto ma ho qualche problema con questi 2:

1 di 2

Il database DBStudenti è composto da quattro tabelle con il seguente schema:

Corsi (CodCorso, NomeCorso, Crediti, Docente)
Esami (Matricola, CodCorso, Data, Voto, Note)
Studenti (Matricola, Cognome, Nome, DataNascita, Indirizzo, CodFac, DataIscrizione)
Facolta (CodFac, NomeFacolta, Sede, Tasse)

Scrivere il comando SQL per elencare le facoltà che hanno incassato più di 500.000 € per tasse d'iscrizione.
Elenco con: NomeFacolta, TotaleTasse



2 di 2

Il database DBStudenti è composto da quattro tabelle con il seguente schema:

Corsi (CodCorso, NomeCorso, Crediti, Docente)
Esami (Matricola, CodCorso, Data, Voto, Note)
Studenti (Matricola, Cognome, Nome, DataNascita, Indirizzo, CodFac, DataIscrizione)
Facolta (CodFac, NomeFacolta, Sede, Tasse)

Scrivere il comando SQL per elencare gli studenti iscritti alla facoltà di nome 'Economia' che sono nati dopo il 1 novembre 1987.
Elenco con: Matricola, Nome, Cognome, Indirizzo, ordinato per Matricola

sopratutto non capisco cosa vogliano nell'ultima riga di ogni richiesta......non è che qualcuno potrebbe svolgerle e farmi capire almeno un minino ?:help:

andrea.ippo
10-05-2010, 17:23
:D lo so che è una richiesta strana ma io ci provo lo stesso:sofico:

domani ho un esame in università di informatica, nulla di troppo difficile tranne per le domande sull'SQL che non avevo manco mai sentito nominare:stordita: facendo i test simulati qualcosa ho fatto ma ho qualche problema con questi 2:



sopratutto non capisco cosa vogliano nell'ultima riga di ogni richiesta......non è che qualcuno potrebbe svolgerle e farmi capire almeno un minino ?:help:

Certo che fare una richiesta del genere alle 17 e 40 della vigilia dell'esame... :D
Comunque, l'ultima riga di ogni domanda ti indica quali attributi (tutti e soli) devono comparire nel risultato (cioè, devi fare una SELECT).


1 di 2

Il database DBStudenti è composto da quattro tabelle con il seguente schema:

Corsi (CodCorso, NomeCorso, Crediti, Docente)
Esami (Matricola, CodCorso, Data, Voto, Note)
Studenti (Matricola, Cognome, Nome, DataNascita, Indirizzo, CodFac, DataIscrizione)
Facolta (CodFac, NomeFacolta, Sede, Tasse)

Scrivere il comando SQL per elencare le facoltà che hanno incassato più di 500.000 € per tasse d'iscrizione.
Elenco con: NomeFacolta, TotaleTasse



SELECT NomeFacolta, Tasse AS TotaleTasse FROM Facolta WHERE Tasse > 500000.

In pratica tutte le info che ti servono sono contenute nella tabella Facolta (clausola FROM), e ottieni le righe di interesse imponendo la condizione che Tasse sia maggiore di 500000.
Poi, dalle righe restituite estrai solo gli attributi richiesti, cioè NomeFacolta e Tasse, che però deve essere rinominato come TotaleTasse (a questo serve la clausola AS).


2 di 2

Il database DBStudenti è composto da quattro tabelle con il seguente schema:

Corsi (CodCorso, NomeCorso, Crediti, Docente)
Esami (Matricola, CodCorso, Data, Voto, Note)
Studenti (Matricola, Cognome, Nome, DataNascita, Indirizzo, CodFac, DataIscrizione)
Facolta (CodFac, NomeFacolta, Sede, Tasse)

Scrivere il comando SQL per elencare gli studenti iscritti alla facoltà di nome 'Economia' che sono nati dopo il 1 novembre 1987.
Elenco con: Matricola, Nome, Cognome, Indirizzo, ordinato per Matricola


Quà le informazioni per soddisfare la query sono distribuite su più tabelle, quindi dovrai fare un JOIN.
Le tabelle di interesse sono Studenti e Facolta.

SELECT Matricola, Nome, Cognome, Indirizzo FROM Studenti JOIN Facolta ON Studenti.CodFac = Facolta.CodFac WHERE NomeFacolta = 'Economia' AND DataNascita > '1987-11-01' ORDER BY Matricola (ASC|DESC)

Qui ho fatto il JOIN tra le tabelle, che mi restituisce un'unica tabella che il prodotto cartesiano delle due. Su questa imposto le condizioni sul nome della facoltà e sulla data di nascita (il formato della data dipende dal DBMS che stai usando) degli studenti, dopodiché ordino i risultati per matricola (se aggiungi ASC l'ordine è ascendente - cioè crescente, mentre con DESC è discendente; se non specifichi il default dovrebbe essere ASC).
Infine specifico che sono interessato ad avere solo i 4 attributi richiesti, cioè Matricola, Nome, Cognome, Indirizzo.

NOTA: quando c'è ambiguità nei nomi degli attributi, usa la notazione nometabella.nomeattributo per disambiguare (ad. es. CodCorso, CodFac e Matricola sono nomi di attributi che compaiono in varie tabelle)

Ciao

Vanon
10-05-2010, 19:24
Grazie per i chiarimenti!! :D Ma fare JOIN è necessario? studiando le dispense non l'ho trovato tra i comandi:stordita: ce ne sono altri ma join no,sarà che il mio è il corso da minorati mentali:D
però penso non ci sia altro modo, col Join in pratica dico ad access di prendere gli studenti con codfac uguale a quello nella tabella facoltà con nome economia:)

andrea.ippo
10-05-2010, 20:27
Grazie per i chiarimenti!! :D Ma fare JOIN è necessario? studiando le dispense non l'ho trovato tra i comandi:stordita: ce ne sono altri ma join no,sarà che il mio è il corso da minorati mentali:D
però penso non ci sia altro modo, col Join in pratica dico ad access di prendere gli studenti con codfac uguale a quello nella tabella facoltà con nome economia:)

Sì, è necessario.
A meno che non sia ammesso per l'esame formulare due query nel seguente modo:

SELECT CodFac FROM Facolta WHERE NomeFacolta = 'Economia'

e poi fare una SELECT per gli studenti, mettendo nella clausole WHERE, oltre alla condizione sulla data di nascita, anche CodFac = '<risultato query precedente'>

Il JOIN serve proprio per non dover fare due operazioni separate, ma se non ti è stato spiegato è impossibile rispondere al punto 2), a meno che non siano ammesse risposte del genere

Vanon
10-05-2010, 20:45
ecco meglio usare il join:D che poi oltretutto la parte SQL viene corretta a mano dal docente e la sua discussione fa parte dell'orale quindi non ci sono problemi a fare qualche eccezione alle dispense (anzi sembrerei addirittura esperto:rolleyes: )

Grazie ancora e se passo l'esame 'na birretta offerta nun te la toglie nessuno;)

andrea.ippo
11-05-2010, 09:05
ecco meglio usare il join:D che poi oltretutto la parte SQL viene corretta a mano dal docente e la sua discussione fa parte dell'orale quindi non ci sono problemi a fare qualche eccezione alle dispense (anzi sembrerei addirittura esperto:rolleyes: )

Grazie ancora e se passo l'esame 'na birretta offerta nun te la toglie nessuno;)

Figurati ;)

Fammi sapere

Vanon
12-05-2010, 01:15
YESSSSSS:D Passato! niente voto perchè scrivono solo "idoneo" ma l'importante sono i 6 crediti assegnati:sofico:

Grazie mille andrea.ippo!! giuro che se passo da roma una capatina la faccio di sicuro;) .............sperando che andrea nel tuo caso sia un nome femminile poi......:oink:

andrea.ippo
12-05-2010, 09:02
YESSSSSS:D Passato! niente voto perchè scrivono solo "idoneo" ma l'importante sono i 6 crediti assegnati:sofico:

Grazie mille andrea.ippo!! giuro che se passo da roma una capatina la faccio di sicuro;) .............sperando che andrea nel tuo caso sia un nome femminile poi......:oink:

Sono contento per te :D

Ciao :)

Vanon
12-05-2010, 13:25
Sono contento per te :D

Ciao :)

:cry: vabbè allora sarà birra senza:oink: ......grazie ancora!:D