SQL
CORSO(NomeC,Sezione,Professore)
ORARIO(NomeC,Sezione,Ora,Giorno)
DISPONIBILITA'(Professore,Giorno,Ora)
si richiede di trovare per ogni corso il numero complessivo di ore in cui si tiene.
SELECT Orario.NomeC SUM(Orario.Ora)
FROM Orario
GROUP BY Orario.NomeC
Una soluzione del genere mi somma le varie ore di ciascun corso? Può andare bene?
ORARIO(NomeC,Sezione,Ora,Giorno)
DISPONIBILITA'(Professore,Giorno,Ora)
si richiede di trovare per ogni corso il numero complessivo di ore in cui si tiene.
SELECT Orario.NomeC SUM(Orario.Ora)
FROM Orario
GROUP BY Orario.NomeC
Una soluzione del genere mi somma le varie ore di ciascun corso? Può andare bene?
Risposte

cosa descrive il campo Orario.ora ?
ciao alex
ciao alex
l'attributo ora di orario
puoi fare 1 esempio di tupla della tabella ORARIO cosi' capisco meglio ?
eh ci fosse l'esempio avrei capito meglio anche io...
purtroppo li danno così gli esercizi,presumo l'attributo ora si in formato date,quello che non so s con SUM date si ha la somma delle ore e se in caso negativo come si fa a trovare il numero delle ore che a quel punto penso si debba ricorrere a un count(*)

Ai provato a utilizzare il comando Distinct?
in questo modo ottieni, si la somma delle ore ma distinte per corsi diversi.
SELECT DISTINCT Orario.NomeC SUM(Orario.Ora)
FROM Orario;
non te lo do per certo perchè sto seguendo il corso adesso...
in questo modo ottieni, si la somma delle ore ma distinte per corsi diversi.
SELECT DISTINCT Orario.NomeC SUM(Orario.Ora)
FROM Orario;
non te lo do per certo perchè sto seguendo il corso adesso...



mmm il distinct mi elimina le righe uguali nel risultato,il mio problema sta invece nella risoluzione,cioè come calcolare una somma di un attributo che non è un numero ma un date
ci sono 2 cose da risolvere:
come si trattano i dati di tipo 'date' (cioe' cosa si intende per somma di 2 date, la scappatoia sarebbe se tale tipo di dato potesse essere buono anche per considerare periodi di tempo)?
bisogna tirare fuori anche i corsi che non hanno lezioni (cioe' con orario totale di lezione pari a 0)?
come si trattano i dati di tipo 'date' (cioe' cosa si intende per somma di 2 date, la scappatoia sarebbe se tale tipo di dato potesse essere buono anche per considerare periodi di tempo)?
bisogna tirare fuori anche i corsi che non hanno lezioni (cioe' con orario totale di lezione pari a 0)?
"codino75":
ci sono 2 cose da risolvere:
come si trattano i dati di tipo 'date' (cioe' cosa si intende per somma di 2 date, la scappatoia sarebbe se tale tipo di dato potesse essere buono anche per considerare periodi di tempo)?
bisogna tirare fuori anche i corsi che non hanno lezioni (cioe' con orario totale di lezione pari a 0)?
è quello che mi chiedo anche io..soprattutto il primo...

a occhio direi che puoi pansare che l'attributo ORARIO.ora sia l'inizio della lezione e che essa duri '1 unita' di tempo lezione'
pensandola così il mio ragionamento è giusto.
Purtroppo a livello teorico lascia molte ambiguità in certe situazioni.
io sarei più incline a pensarlo come un ra specifica perchè l'attributo ora compare anche in disponibilità..
Purtroppo a livello teorico lascia molte ambiguità in certe situazioni.
io sarei più incline a pensarlo come un ra specifica perchè l'attributo ora compare anche in disponibilità..
ti consiglio di pensare anche alla seconda questione che ho postato prima.
i professori univesitari in cose tipo queste sono un po' snob.
infatti il testo del problema dice ' per ogni corso'
i professori univesitari in cose tipo queste sono un po' snob.
infatti il testo del problema dice ' per ogni corso'
la seconda questione tenendo conto che ora non sia date per corsi con 0 ore restituisce 0..
"marktrix":
la seconda questione tenendo conto che ora non sia date per corsi con 0 ore restituisce 0..
se un certo corso non compare nella tabella ORARIO (potrebbe succedere, a naso, se il corso non prevede lezioni) non comparira' nemmeno nella query in quanto sotto il from c'e' proprio la tabella ORARIO
ah ok quindi la select va fatta a CORSO joinandolo a ORARIO che deve fare la sum(ora)
"marktrix":
ah ok quindi la select va fatta a CORSO joinandolo a ORARIO che deve fare la sum(ora)
anche se fai il join tra CORSO e ORARIO vale l'osservazione che ho fatto prima, se non sbaglio
mi sa che ti devi inventare qualcosa di piu' complesso.
no scusa ma ti sbagli
SELECT Corso.NomeC restituisce tutti i corsi presenti nella tabella e anche se non sono presenti in orario devono per forza essere presenti qua.
SELECT Corso.NomeC restituisce tutti i corsi presenti nella tabella e anche se non sono presenti in orario devono per forza essere presenti qua.
"marktrix":
no scusa ma ti sbagli
SELECT Corso.NomeC restituisce tutti i corsi presenti nella tabella e anche se non sono presenti in orario devono per forza essere presenti qua.
mi posti il FROM che vorresti fare?
SELECT Corso.NomeC SUM(Orario.Ora)
FROM Corso,Orario
WHERE Corso.NomeC=Orario.NomeC
GROUP BY Corso.NomeC
questo garantito al 100% restituisce tutti i corsi e a fianco mette sum ora..
il mio problema è capire sta ora come sommarla
FROM Corso,Orario
WHERE Corso.NomeC=Orario.NomeC
GROUP BY Corso.NomeC
questo garantito al 100% restituisce tutti i corsi e a fianco mette sum ora..
il mio problema è capire sta ora come sommarla
"marktrix":
SELECT Corso.NomeC SUM(Orario.Ora)
FROM Corso,Orario
WHERE Corso.NomeC=Orario.NomeC
GROUP BY Corso.NomeC
con questa clausola where non prendi i corsi che non sono in ORARIO.NomeC