Numérotation tableau mysql

Résolu
BARA_Marie Messages postés 6 Date d'inscription dimanche 21 décembre 2003 Statut Membre Dernière intervention 16 juillet 2013 - 15 juil. 2013 à 13:02
BARA_Marie Messages postés 6 Date d'inscription dimanche 21 décembre 2003 Statut Membre Dernière intervention 16 juillet 2013 - 16 juil. 2013 à 15:50
Bonjour,

je débute avec MySQL en vs2010

j'utilise Visual studio, pour exécuter mes requêtes MySQL j'utilise ce principe, mais pour numéroter mon résultat dans un tableau cette requête ne fonctionne pas :

Chaine.Format(_T("SET @num=0; SELECT @num:=@num+1, id_terme FROM cui_terme ORDER BY nom_terme"));
int x = Chaine.GetLength() + 1;
char *Base = (char *)malloc( x );
size_t ix;
wcstombs_s(&ix, Base, x,Chaine, _TRUNCATE);
mysql_query(ConnexionMysql, Base);
Resultat = mysql_store_result(ConnexionMysql);

[:o)]Jean-Luc

4 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
15 juil. 2013 à 21:34
Ca veut dire qu'il y a une erreur dans ta deuxième requete. Essaie de faire comme ceci:
int ret;
ret=mysql_query(ConnexionMysql,"SET @num=0"); 
ret=mysql_query(ConnexionMysql,"SELECT @num:=@num+1, id_terme FROM cui_term ORDER BY nom_terme"); 
Normalement, mysql_query() retourne 0 quand il n'y a pas d'erreur dans la requete. Il faut donc t'assurer qu'elle retourne bien 0 pour ton deuxième appel.
3
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
15 juil. 2013 à 21:02
Salut,
mysql_query() n'accepte qu'une seule requete par appel alors que tu en as deux dans ta chaine. Mets "SET @num=0" dans une première chaine puis appelle mysql_query(). Mets ensuite "SELECT @num:=@num+1, id_terme FROM cui_term ORDER BY nom_term" dans la chaine et fais un deuxième appel à mysql_query().
0
BARA_Marie Messages postés 6 Date d'inscription dimanche 21 décembre 2003 Statut Membre Dernière intervention 16 juillet 2013
15 juil. 2013 à 21:14
Bonsoir

désolé, j'ai essayé ta solution mais cela ne fonctionne pas.

[:o)]Jean-Luc
0
BARA_Marie Messages postés 6 Date d'inscription dimanche 21 décembre 2003 Statut Membre Dernière intervention 16 juillet 2013
16 juil. 2013 à 15:50
Voici ma solution après avoir revu mon code cela fonctionne

CString Chaine;
Chaine.Format(_T("set @num=0; "));
int x1 = Chaine.GetLength() + 1;
char *Base1 = (char *)malloc( x1 );
size_t   ix1;
wcstombs_s(&ix1, Base1, x1,Chaine, _TRUNCATE);
mysql_query(ConnexionMysql, Base1);
Chaine.Format(_T("SELECT Id_Terme, Nom_terme, @num:=@num+1 as Id_Ligne  FROM cui_terme ORDER BY nom_terme;"));
int x = Chaine.GetLength() + 1;
char *Base = (char *)malloc( x );
size_t   ix;
wcstombs_s(&ix, Base, x,Chaine, _TRUNCATE);
mysql_query(ConnexionMysql, Base);
Resultat = mysql_store_result(ConnexionMysql);


Merci encore
[:o)]Jean-Luc
0
Rejoignez-nous