|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
[Mysql]Stored Procedure
Ariekkimee..e..e
il problemuccio del giorno è questo: tabella eventi: id_evento (int) id_persona (int) id_luogo (int) giorno date spesa (double) note text ora, dovrei tirare fuori una query che dato il mese, mi visualizzi il tutto sottoforma di calendario, anche dove non sono presenti valori; mi spiego meglio: do in pasto alla query in input: l'id della persona e la data riferita al mese, per esempio 5 (maggio) e dovrei ottenere in uscita una sorta di calendario che abbia comunque tutti i giorni del mese come colonna, ed una sola riga contenente il valore o di "spesa" o di "note" in corrispondenza del giorno nel quale ci sono appunto questi valori. Stavo procedendo così: Codice:
CREATE PROCEDURE MONTH_VIEW( IN anno INT, IN mese INT, IN giorno INT, IN dipendente INT, OUT outDay DATETIME, OUT outSpesa DOUBLE, OUT outNote VARCHAR(6)) BEGIN DECLARE giorno DATETIME; DECLARE spesa DOUBLE; DECLARE spesaMese DOUBLE; DECLARE note VARCHAR(6); SELECT ev.giorno, ev.spesa, SUM(ev.spesa), ev.note INTO giorno, spesa, spesaMese, note FROM eventi ev WHERE YEAR(ev.giorno) = anno AND MONTH(ev.giorno) = mese AND DAY(ev.giorno) = giorno AND ev.id_dipendente = dipendente; GROUP BY (non so) END [data1] [data2] [data3] dove con data intendo il nome e il numero del giorno, in corrispondenza del quale dovrei avere o il valore di una spesa, o il valore di una nota (perchè se c'è l'una non ci può essere l'altra) Grazie ![]() RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
ho fatto un piccolo progessuccio:
Codice:
CREATE PROCEDURE MONTH_VIEW( IN anno INT, IN mese INT, IN giorno INT, IN persona INT, OUT valore VARCHAR) BEGIN DECLARE spese DOUBLE; DECLARE note VARCHAR(6); SELECT ev.spese, ev.note INTO spese, note FROM eventi ev WHERE YEAR(ev.giorno) = anno AND MONTH(ev.giorno) = mese AND DAY(ev.giorno) = giorno AND ev.ID_Persona = persona; SELECT IF(NOT spese IS NULL, spese, note) INTO valore; END //\\ \\// call MONTH_VIEW(2008, 6, 1, 1, @valore); mysql> select @valore; +---------+ | @valore | +---------+ | F | +---------+ 1 row in set (0.00 sec) call MONTH_VIEW(2008, 6, 6, 1, @valore); mysql> select @valore; +---------+ | @valore | +---------+ | 3.00 | +---------+ 1 row in set (0.00 sec) Sono cmq fermo su come presentare i valori sottoforma di calendario ![]() ![]() ![]()
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Se fissi i giorni a 31 per qualunque mese, qualcosa si può fare.
Comunque con PL/SQL di MySQL ho lavorato poco perché mi fa schifo, per cui vorrei evitare di andare a rimetterci mano (preferisco di gran lunga il PL/SQL di FireBird).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Quote:
![]() grazie anche per l'altro 3d ![]() tornando it... il db fortunatamente posso cambiarlo se un nuovo motore può risolvermi questi problemi. Magari lo installo e poi potresti darmi una mano. Per quanto riguarda l'idea di fissare a 31 i giorni per ciascun mese, mi incuriosisce. Provo a buttar giù qualcosa su quest'idea. Grazie. RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:05.