Oppure

Loading
05/06/09 13:38
al3x90
Buongiorno ragazzi!

In access
Ho una tabella STUDENTI con attributo chiave: "matricola"
E una tabella ASSENZE con chiave esterna "matricola" , attributo chiave derivato dalla tabella STUDENTI e una flag "Ritardo", che se selezionata voglio che valga = 1, se deselezionata = 6 ...
Utilizzando questo codice:

(
Select Assenze.matricola, count(Assenze.Ritardo) As somma_totale_ore
FROM assenze
GROUP BY Assenze.matricola, Assenze.Ritardo
HAVING (Assenze.Ritardo=true)
)

UNION (
Select assenze.matricola, Count(Assenze.Ritardo)*6 As somma_totale_ore
FROM assenze
GROUP BY assenze.matricola, assenze.Ritardo
HAVING (assenze.Ritardo=False)
);


Mi visualizza ad esempio per la matricola 2

Matricola somma_totale_ore
2 3
2 18


Io devo poter sommare i due risultati ottenuti, ottenendo un risultato del tipo:

Matricola somma_totale_ore
2 21


Sareste in grado di aiutarmi?!
Son giorni che ci penso su... :(
Ultima modifica effettuata da al3x90 05/06/09 15:43
aaa
05/06/09 15:33
gigisoft
Postato originariamente da al3x90:



Salve
cosi' a occhio vedo 2 errori:

1) tu scrivi

un flag "Ritardo", che se selezionato voglio che valga = 1, se deselezionata = 6


e poi lo tratti come un booleano

[...]
HAVING (Assenze.Ritardo=true)
[...]
HAVING (assenze.Ritardo=False)
[...]


2) non vorrei sbagliarmi ma penso che la GROUP BY possa essere fatta solo su
assenze.matricola usando la WHERE invece della HAVING
dovrebbe funzionare meglio.


Poi, per il tuo problema, penso che dovresti mettere le tue quary in una vista
( Chiamiamola V ) e poi fare la query


Select Assenze.matricola, count(somma_totale_ore)
FROM V
GROUP BY Assenze.matricola


Ciao. :k:

Luigi
aaa
05/06/09 15:38
al3x90
Ho risolto con una semplice "if" , ero letteralmente fuori strada con la "union" :)
Grazie comunque per l'attenzione!
aaa