IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Problème d'affichage d'une requête sql c


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2003
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 132
    Points : 89
    Points
    89
    Par défaut Problème d'affichage d'une requête sql c
    Bonjour,

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    SQL_CODE BdbR_poste_parcours_TOTO_Extraire(s_LISTE_poste_PARCOURS_TOTO **r_liste_poste_parcours_TOTO)
    {
     
      exec sql whenever sqlwarning continue;
      exec sql whenever sqlerror   continue;
      exec sql whenever not found  continue;
     
      exec sql begin declare section;
    	poste_PARCOURS_TOTO w_poste_parcours_TOTO;
      exec sql end declare section;
     
      s_LISTE_poste_PARCOURS_TOTO *w_liste_poste_parcours_TOTO_premier = NULL ;
      s_LISTE_poste_PARCOURS_TOTO *w_liste_poste_parcours_TOTO_courant = NULL ;
     
      SQL_CODE sqlcode = NOT_FOUND ;
      long nb = 0;  
     
      #ifdef NOM_FONCTION
        #undef NOM_FONCTION
      #endif
     
      #ifdef TRACE
        #define NOM_FONCTION "BdbR_poste_parcours_TOTO_Extraire"
        ENTREE_FONCTION;
      #endif  
     
      /* execution de la requete */
     
       exec sql declare curseur_liste_poste_parcours_TOTO cursor
       for
        select r_int_poste,r_dda,r_dfa,r_int_canton,r_int_noeudv,r_n_aiguille,r_position from r_poste ,r_iti_canton , r_iti_aig_inter  
        where r_int_poste=r_int_poste and r_int_poste=r_int_poste and r_int_poste=r_int_poste 
        order by r_int_poste,r_rang;
     
         #ifdef TRACE
           printf ("sqlca.sqlcode après extraction : %d \n", sqlca.sqlcode);
         #endif
     
         exec sql open curseur_liste_poste_parcours_TOTO for readonly;
     
         #ifdef TRACE
         printf ("sqlca.sqlcode après ouverture liste : %d \n", sqlca.sqlcode);
         #endif
     
         if (sqlca.sqlcode == FOUND)
         {
            /* lecture du premier enregistrement */
            exec sql fetch curseur_liste_poste_parcours_TOTO into :w_poste_parcours_TOTO ;
            #ifdef TRACE
              printf ("sqlca.sqlcode apres premier fetch  : %d \n", sqlca.sqlcode);
            #endif 
    	/*
    	 s'il existe au moins 1 enregistrement
    	 on inTOTOalise le 1er element de la liste
    	*/
         	if (sqlca.sqlcode == FOUND) {
               sqlcode = FOUND ;
               w_liste_poste_parcours_TOTO_premier = (s_LISTE_poste_PARCOURS_TOTO *) malloc(sizeof(s_LISTE_poste_PARCOURS_TOTO)) ;
               w_liste_poste_parcours_TOTO_premier->s_poste_parcours_TOTO = w_poste_parcours_TOTO ;
               w_liste_poste_parcours_TOTO_premier->suivant = NULL ;
               w_liste_poste_parcours_TOTO_courant = w_liste_poste_parcours_TOTO_premier ;
    	   nb=1;
     
    	   exec sql fetch curseur_liste_poste_parcours_TOTO into :w_poste_parcours_TOTO ;
    	}	
         }
     
         /* tant que l'on trouve des enregistrements */
    	/*
    	 On enchaine les enregistrements dans la liste chainee
    	*/
     
         while (sqlca.sqlcode == FOUND)
         {
            nb = nb +1;  
     
            w_liste_poste_parcours_TOTO_courant->suivant = (s_LISTE_poste_PARCOURS_TOTO *) malloc(sizeof(s_LISTE_poste_PARCOURS_TOTO)) ;
            w_liste_poste_parcours_TOTO_courant = w_liste_poste_parcours_TOTO_courant->suivant ;
            w_liste_poste_parcours_TOTO_courant->s_poste_parcours_TOTO = w_poste_parcours_TOTO ;
            w_liste_poste_parcours_TOTO_courant->suivant = NULL ;
     
            exec sql fetch curseur_liste_poste_parcours_TOTO into :w_poste_parcours_TOTO ;
          }
     
         #ifdef TRACE
         printf ("sqlca.sqlcode apres tous les fetch : %d \n", sqlca.sqlcode);
         #endif      
     
         if ( sqlca.sqlcode < FOUND )
            sqlcode = sqlca.sqlcode ;
     
         if (( sqlca.sqlcode == FOUND ) || ( sqlca.sqlcode == NOT_FOUND ))
            exec sql close curseur_liste_poste_parcours_TOTO ;
     
      /* on fait pointer la liste passée en paramètre sur la tête de la liste */
      /* qui vient d'être créée */  
     
      *r_liste_poste_parcours_TOTO = w_liste_poste_parcours_TOTO_premier ;
     
     
      #ifdef TRACE
        printf ("nombre enregistrement : %d \n ", nb); 
         SORTIE_FONCTION;
      #endif 
     
     
      return(sqlcode);
     
    }
    voilà le résultat retourné de la requête dans un fichier txt :

    r_int_poste r_dda r_dfa r_int_canton r_int_noeud r_n_aiguille r_position
    11 20160401 20170101 11 5037 224a G
    11 20160401 20170101 11 5039 331a G
    13 20160401 20170101 13 5037 224a G
    13 20160401 20170101 14 5037 222a G

    le résultat que je voudrais produire est celui-ci txt :

    r_int_poste r_dda r_dfa r_int_canton1 r_int_canton2 r_int_noeud1 r_int_noeud2 r_n_aiguille1 r_position1 r_n_aiguille2 r_position2
    11 20160401 20170101 11 5037 224a G 5039 331a G
    13 20160401 20170101 13 14 5037 224a G 5037 222a G

    Est-ce que je peux faire des tests sur r_int_poste et r_int_canton pour prendre en compte que les colonnes différentes ?

    Ou est-ce que je dois construire autrement ma requête ?

    Merci par avance pour votre aide.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Le principe classique est de mettre une clause "order by" sur les clés puis de mémoriser les clés de la ligne précédente. Si les clés de la ligne courante sont identiques à la précédente, alors écrire les données sur la même ligne.
    Sinon, écrire les données sur une nouvelle ligne.
    Je ne comprend pas ou est la difficulté, je suis certainement passé à coté de ton problème
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

Discussions similaires

  1. Problème d'affichage d'une requête SQL dans un tableau
    Par seremei dans le forum Collection et Stream
    Réponses: 22
    Dernier message: 05/03/2012, 21h52
  2. Problème avec like dans une requête SQL
    Par Boublou dans le forum SQL
    Réponses: 2
    Dernier message: 16/08/2007, 15h46
  3. Problème de SUM sur une requête SQL
    Par Lapicure dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 12/06/2007, 11h51
  4. Problème d'affichage d'une requête
    Par alexandrebergercyr dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 04/05/2007, 20h40
  5. [MySQL] Problème d'affichage d'une requête
    Par frakosun dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 23/04/2007, 18h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo