View Full Version : [MySql]creazione view
RaouL_BennetH
04-05-2007, 15:10
Ciao a tutti :)
Mi servirebbe un aiuto per creare una view.
In particolare, ciò che concettualmente mi servirebbe tirare fuori è una cosa tipo:
CREATE VIEW dettagli AS SELECT tabella.ID_Persona as ID_Persona,
tabella.Indirizzo as Indirizzo,
//qui viene il problema
count(campo) where campo = 'valore' as campo <--- ?come faccio qui?
Considerando che ho tre diversi campi di cui:
1) ha solo valori 0 e 1, quindi per questo risolvo facendo:
sum(campo) as campo;
2) Ha valori: 25, 28, 30, 50
e in questo caso devo fare il count di quanti sono 25, quanti 28, quanti 30 e quanti 50.
3) Ha valori: O, F, FN
e devo fare il count di quanti O, quanti F e quanti FN
Grazie mille :)
RaouL.
RaouL_BennetH
04-05-2007, 16:34
risolto ... bastava un 'banale'
select pippo as pippo, (select count(campo) from tabella where valore = valore) as campo from tabella blablabla
RaouL_BennetH
07-05-2007, 13:52
scusatemi, invece non bastava nessun banale select :(
allora, la query è questa:
create view dipendentiDettaglio as select orebeta.ID_Mese as ID_Mese,
orebeta.ID_Dipendente as ID_Dipendente,
orebeta.cantiere as cantiere,
orebeta.cantiereSede as cantiereSede,
orebeta.servizio as servizio,
(select(sum(format(time_to_sec(totale) / 3600, 2 ))) from orebeta where tOrd = '1') as totaleOrdinarie,
(select(sum(format(time_to_sec(totale) / 3600, 2))) from orebeta where maggiorazione = '25') as mag1,
sum(format(time_to_sec(totale) / 3600, 2)) as totaleOre,
sum(dailyMoneyTotal) as paga from orebeta
group by orebeta.ID_Mese, orebeta.ID_Dipendente, orebeta.cantiere, orebeta.cantiereSede, orebeta.servizio
Funziona fin quando elaboro una sola persona :(
Se ne metto due, nei totali mi fa i totali di entrambi.
Dove sbaglio?
Grazie.
RaouL.
L'errore dovrebbe essere nelle due SELECT..SUM annidate che usi per il calcolo delle somme, queste si comportano indipendentemente dalle condizioni WHERE impostate per l'interrogazione e forniscono sempre i totali complessivi della tabella.
Forse (dico forse) così:create view dipendentiDettaglio as
select
orebeta.ID_Mese as ID_Mese,
orebeta.ID_Dipendente as ID_Dipendente,
orebeta.cantiere as cantiere,
orebeta.cantiereSede as cantiereSede,
orebeta.servizio as servizio,
sum(if (tOrd = '1'; ((format(time_to_sec(totale) / 3600, 2 )));0)) as totaleOrdinarie,
sum(if (maggiorazione = '25'; ((format(time_to_sec(totale) / 3600, 2)));0)) as mag1,
sum(format(time_to_sec(totale) / 3600, 2)) as totaleOre,
sum(dailyMoneyTotal) as paga from orebeta
group by
orebeta.ID_Mese,
orebeta.ID_Dipendente,
orebeta.cantiere,
orebeta.cantiereSede,
orebeta.servizio
RaouL_BennetH
08-05-2007, 12:32
grazie mille per la risposta :)
Provo subito e ti faccio sapere.
RaouL.
RaouL_BennetH
08-05-2007, 12:56
Ti ringrazio infinitamente :)
La tua soluzione mi da i risultati corretti !!
Grazie mille!
RaouL.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.