RaouL_BennetH
20-02-2007, 12:20
Eccomi di nuovo a tormentarvi con i miei problemucci :)
try
{
using (MySqlConnection cn = ConnClass.Create())
{
int days = Thread.CurrentThread.CurrentCulture.Calendar.GetDaysInMonth(2007, ((DateTimePicker)dateTimePickerHost.Control).Value.Month);
string select = "SELECT dipendenti.codice,dipendenti.Cognome,dipendenti.Nome";
for (int count = 1; count <= days; ++count)
{
select += ",MAX(CASE WHEN ISNULL(IF(monthlyview2.giorno='" + count + "', DATE_FORMAT(monthlyview2.totale, '%H.%i'), '')) THEN monthlyview2.assenze WHEN ISNULL(monthlyview2.assenze) THEN IF(monthlyview2.giorno = '" + count + "' ,DATE_FORMAT(monthlyview2.totale, '%H.%i'), '') END) AS '" + count + "'";
}
select += ",DATE_FORMAT(globalmese2.totale, '%H.%i') AS 'Totale' FROM dipendenti, monthlyview2, globalmese2 " +
"WHERE monthlyview2.ID_Dipendente = dipendenti.ID_Dipendente " +
"AND monthlyview2.ID_Mese = '" + ((DateTimePicker)dateTimePickerHost.Control).Value.Month + "' " +
"AND monthlyview2.ID_Dipendente = globalmese2.ID_Dipendente " +
"AND globalmese2.ID_Mese = '" + ((DateTimePicker)dateTimePickerHost.Control).Value.Month + "' " +
"AND dipendenti.categoria = '" + cmbCategoria.ComboBox.Text + "' GROUP BY globalmese2.ID_Dipendente";
Questa query, mi serve per trasformare i vari campi che sono composti da righe presenti in delle view, in colonne, per avere a video i dati ordinati in una tabella. In considerazione del fatto che i dati provengono per la maggiore da delle view, mi è venuto in mente invece che l'utente potrebbe avere necessità di modificarli successivamente e vorrei che nn fosse costretto ad agire sulle tabelle di origine ma direttamente da ciò che viene fuori da questa horror-query.
Adesso, la mia domanda è: posso creare una tabella da questa query? E se si, mi indichereste come?
A parte l'orrore che vi potrà suscitare, considerate che non so nulla di logica di database, quindi ignoro se c'è un modo migliore (sicuramente si) per eseguire la stessa query. Dato che il programma non è destinato ad un uso professionale, ma è solo uno studio personale con le poche conoscenze acquisite sino adesso. Con questo intendo dire che preferirei che non mi segnalaste al "daily wtf" :D
Grazie.
RaouL.
try
{
using (MySqlConnection cn = ConnClass.Create())
{
int days = Thread.CurrentThread.CurrentCulture.Calendar.GetDaysInMonth(2007, ((DateTimePicker)dateTimePickerHost.Control).Value.Month);
string select = "SELECT dipendenti.codice,dipendenti.Cognome,dipendenti.Nome";
for (int count = 1; count <= days; ++count)
{
select += ",MAX(CASE WHEN ISNULL(IF(monthlyview2.giorno='" + count + "', DATE_FORMAT(monthlyview2.totale, '%H.%i'), '')) THEN monthlyview2.assenze WHEN ISNULL(monthlyview2.assenze) THEN IF(monthlyview2.giorno = '" + count + "' ,DATE_FORMAT(monthlyview2.totale, '%H.%i'), '') END) AS '" + count + "'";
}
select += ",DATE_FORMAT(globalmese2.totale, '%H.%i') AS 'Totale' FROM dipendenti, monthlyview2, globalmese2 " +
"WHERE monthlyview2.ID_Dipendente = dipendenti.ID_Dipendente " +
"AND monthlyview2.ID_Mese = '" + ((DateTimePicker)dateTimePickerHost.Control).Value.Month + "' " +
"AND monthlyview2.ID_Dipendente = globalmese2.ID_Dipendente " +
"AND globalmese2.ID_Mese = '" + ((DateTimePicker)dateTimePickerHost.Control).Value.Month + "' " +
"AND dipendenti.categoria = '" + cmbCategoria.ComboBox.Text + "' GROUP BY globalmese2.ID_Dipendente";
Questa query, mi serve per trasformare i vari campi che sono composti da righe presenti in delle view, in colonne, per avere a video i dati ordinati in una tabella. In considerazione del fatto che i dati provengono per la maggiore da delle view, mi è venuto in mente invece che l'utente potrebbe avere necessità di modificarli successivamente e vorrei che nn fosse costretto ad agire sulle tabelle di origine ma direttamente da ciò che viene fuori da questa horror-query.
Adesso, la mia domanda è: posso creare una tabella da questa query? E se si, mi indichereste come?
A parte l'orrore che vi potrà suscitare, considerate che non so nulla di logica di database, quindi ignoro se c'è un modo migliore (sicuramente si) per eseguire la stessa query. Dato che il programma non è destinato ad un uso professionale, ma è solo uno studio personale con le poche conoscenze acquisite sino adesso. Con questo intendo dire che preferirei che non mi segnalaste al "daily wtf" :D
Grazie.
RaouL.