PDA

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.

newuser
07-05-2007, 22:03
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.

newuser
07-05-2007, 22:38
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.