Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-08-2006, 20:37   #1
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
[mysql e un ciclo for in qualsiasi linguaggio]per favore aiutatemi

Ciao a tutti e grazie in anticipo a chiunque almeno si limiterà a leggermi.

Passando al problema:

Ho una semplice tabella composta da 3 colonne:

Codice:
ID = chiave primaria
ID_Persona = int
Giorno = int
Totale = time.
In questa tabella i campi vengono memorizzati in questo modo:

Codice:
ID_Persona          Giorno          Totale
1                       1                 01:00:00
1                       2                 03:15:00
1                       3                 04:00:00
2                       1                 05:35:00
2                       2                 04:15:00
2                       3                 03:25:00
etc.....
Ora, io avrei bisogno di fare una query che me li riporti così:

Codice:
ID_Persona         1                 2               3
1                      01:00:00       03:15:00    04:00:00
2                      05:35:00       04:15:00    03:25:00
Questa query, direttamente da mysql la ottengo così:

Codice:
SELECT ID_Persona, MAX(IF(giorno='1',totale,'')) AS '1',
MAX(IF(giorno='2',totale,'')) AS '2',
MAX(IF(giorno='3',totale,'')) AS '3' FROM persone GROUP BY ID_Persona;
E funziona perfettamente all'interno di mysql.

Il mio problema è che devo usare questa query dall'interno di un programma C#.

Stavo provando in questa maniera ma senza successo:

Codice:
for (int count = 1; count <=3; count++)
{
     string select = "SELECT ID_Persona, MAX(IF(giorno='" + count +"', totale, '')) AS '" + count + "' FROM Persone GROUP BY ID_Persona";
     MySqlDataAdapter mda = new MySqlDataAdapter(select, miaConnessione);
    DataSet ds = new DataSet();
    mda.Fill(ds, "Persone");
    griglia.DataSource = ds;
    griglia.DataMember = "Persone";
}
questo codice però non mi visualizza le cose come vorrei, ma le visualizza così:

Codice:
ID_Persona      3
1                   
2                   03:25:00

mentre invece dovrei avere questo:

ID_Persona         1                 2               3
1                      01:00:00       03:15:00    04:00:00
2                      05:35:00       04:15:00    03:25:00
Mi scuso per la lunghezza del post, ma spero che qualcuno di voi riesca ad aiutarmi.

Grazie mille.

Raoul
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2006, 23:00   #2
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Soluzione trovata dall'aiuto preziosissimo di vicius che pubblicamente ringrazio

il for andava fatto così:

Codice:
string sql = "SELECT ID_Persona";

for(int count = 1; count < giorniMese; ++count)
{
    sql += ", MAX(IF(giorno='" + count "',totale,'')) AS '" + count +"'";
}
sql += "FROM persone GROUP BY ID_Persona";
MySqlDataAdapter mda = new MySqlDataAdapter(select, miaConnessione);
DataSet ds = new DataSet();
mda.Fill(ds, "Persone");
griglia.DataSource = ds;
griglia.DataMember = "Persone";
Grazie mille vicius

Raoul.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:14.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v