PDA

View Full Version : [mysql e un ciclo for in qualsiasi linguaggio]per favore aiutatemi


RaouL_BennetH
26-08-2006, 20:37
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:



ID = chiave primaria
ID_Persona = int
Giorno = int
Totale = time.



In questa tabella i campi vengono memorizzati in questo modo:


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ì:


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ì:



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:


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ì:


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

RaouL_BennetH
26-08-2006, 23:00
Soluzione trovata dall'aiuto preziosissimo di vicius che pubblicamente ringrazio :)

il for andava fatto così:


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.