![]() |
Pages (2): [1] 2 » Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Basi di dati ~ comunicazione digitale (http://www.dsy.it/forum/forumdisplay.php?forumid=108)
-- [Help] Vecchi temi d'esame (http://www.dsy.it/forum/showthread.php?threadid=29060)
[Help] Vecchi temi d'esame
Ciao a tutti,
Ho un problema su uno schema ER dell'esame di luglio 2005 Mazzoleni/Perlasca.(1° esercizio).
Io come Entita ho individuato che:
Studenti ---> ESAMI(data, voto)---> Corsi (molti a molti)
Corsi---> TIENE ---> Docente (molti a moli)
Il mio problema e' riguardo i turni che nn capisco se fare un'altra entita turni oppure legarla come attributo all'entita o docente o corsi. ma non so come.
Qualcuno che m puo' aiutare?
Allego il link del file alla quale m sto riferendo:
http://www.dsy.it/forum/attachment.php?s=&postid=355515
Io il turno lo legherei semplicemente all'entità corso e metterei quindi come chiave primaria "Nome_Corso" e "Turno" oppure un id..
le iscrizioni degli studenti ai corsi invece come le gestisci??
Ti posto quello che potrebbe essere uno schema ER sensato + le relazioni secondo me.
Dimmi che ne pensi e se potrebbe avere senso
secondo me ci sono un po' di cose che non vanno..
domani se ho tempo provo a postare come lo farei io..
ciao
ok, io l'ho fatto così, ti passo direttamente il db da dove puoi vedere tutto (query comprese)... ![]()
Posto un altro vecchio tema, aprile 2006, la cui soluzione nell'area filez secondo me è sbagliata (lo schema relazionale)..
fatemi sapere che ne pensate..
Originally posted by -MICKY-
Posto un altro vecchio tema, aprile 2006,
__________________
![]()
Originally posted by ked
anche secondo me ha sbagliato: basta mettere cod_responsabile (che può essere nullo se lui è un responsabile) nella tabella Commesso.
Originally posted by ked
invece nella query2:
SELECT DISTINCT Nome
FROM Prodotto, Compra
WHERE Cod_Prodotto = cod_p#
AND YEAR(data_acq) = 2000
GROUP BY Nome
ORDER BY Nome;
fa un raggruppamento sul nome e poi un distinct ancora sul nome...
Ti da lo stesso risultato se usi singolarmente Distinct o Group ma utilizarli tutte e due è inutile...no? che dite??
a distanza di mesi non posso dirti come l'avevo pensata, comunque senza distinct, dopo aver raggruppato, potrebbe scriverti più righe aventi lo stesso nome, aggiungendo quella clausola invece dovrebbe scrivere il nome anche se appare più volte nella tabella. In ogni caso potrebbe anche essere che sia sbagliata, nel caso non mi ha segnato l'errore ![]()
ecco la mia versione, logicamente diversa dalla vostra ;-))
premetto che il testo per me non è chiarissimo infatti:
1) io considero le tabelle Corsi ed Esami uguali...così non ripeto dei dati che ho di già in una tabella.
2) non specifica espressamente la suddivisione per turni degli studenti e quindi questo non lo considero..semmai è uguale alla soluzione per i docenti.
.... cosa ne pensate??
L'ultima query, quella che richiede il nome dello studente con il maggior numero di tentativi, come l'avete fatta??
__________________
![]()
Originally posted by ked
L'ultima query, quella che richiede il nome dello studente con il maggior numero di tentativi, come l'avete fatta??
Originally posted by -MICKY-
bisognerebbe contare i tentavi e prendere il maggiore ma secondo me non si può fare con una query sola..
io ho contato i tentativi e li ho ordinati dal più alto al più basso (è praticamente l'equivalente)
dovrebbe andar bene cmq credo..
Originally posted by PablitoEscobar
forse una roba del genere :
Select Studenti.nome, MAX(COUNT(*))
from Studenti, Corsi, Sostenuto
where Studenti.ID_Studenti = Sostenuto.ID_Studenti,
and Corsi.ID_Studenti = Sostenuto.ID_Studenti,
and Corsi.nome = "Informatica applicata",
and Sostenuto.voto <18,
Group by Studenti.nome.
Oppure sicuramente nel db di Micky
SELECT studente.Cognome, esame.matricola, count(Esame.matricola) AS NumVolteNonSuperatoEsameLabInfApplicata
FROM Esame, studente
WHERE esame.matricola=studente.matricola and voto<18 and nome_corso="LabInfApplicata"
GROUP BY cognome, esame.matricola
HAVING COUNT(esame.matricola) >=ALL (
SELECT count(Esame.matricola) AS NumVolteNonSuperatoEsameLabInfApplicata
FROM Esame, studente
WHERE esame.matricola=studente.matricola and voto<18 and nome_corso="LabInfApplicata"
GROUP BY cognome, esame.matricola
) [/B]
Originally posted by -MICKY-
max(count(*)) l'avevo provato anch'io ma non si può fare..
| All times are GMT. The time now is 00:37. | Pages (2): [1] 2 » Show all 18 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.