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

DB2 Discussion :

Récupérer plusieurs lignes et les afficher dans une seule colonne et un seul champ


Sujet :

DB2

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 41
    Points : 12
    Points
    12
    Par défaut Récupérer plusieurs lignes et les afficher dans une seule colonne et un seul champ
    Bonjour,

    Je bosse sur une base de données ÉLÈVES et je dois extraire de cette base les noms, prénoms, âge, sexe, classe, options, etc .....

    Hormis les OPTIONS, tout les champs que je dois récupérer s'affiche correctement.

    Il peut y avoir plusieurs OPTIONS par élève (de 1 à 10) ou bien aucune option selon les élèves.
    Chaque option à bien évidemment une clé unique OPTION_ID

    Exemple:
    Pour un élève, j'ai 3 options :
    ALL1 BRYAN
    AGL2 BRYAN
    ESP3 BRYAN
    Je souhaite que le résultat retourné ressemble à ceci :

    BRYAN ALL1, AGL2, ESP3
    J'ai parcouru nombreux forum et il semblerait que je dois faire une FONCTION pour pouvoir obtenir le résultat que je souhaite.
    J'ai essayé GROUP_CONCAT, CONCAT, CONCAT_WS, mais rien à y faire ...
    Je dois probablement mal syntaxé ma requête.

    Pourriez-vous me venir en aide car je ne parviens pas à faire cette fonction ?

    Je vous souhaite une belle journée à toutes et tous.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 767
    Points : 10 764
    Points
    10 764
    Par défaut
    Bonjour pour faire ce genre d'opération j'utilise la fonction xmlserialize.
    https://www.ibm.com/support/knowledg...serialize.html
    A la suite de ça tu peux chercher le mots clé : xmlagg, xmltxt

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Darkzinus Voir le message
    Bonjour pour faire ce genre d'opération j'utilise la fonction xmlserialize.
    https://www.ibm.com/support/knowledg...serialize.html
    A la suite de ça tu peux chercher le mots clé : xmlagg, xmltxt
    Jamais utilisé, quelques exemples avec un échantillon des données en entrée et du résultat obtenu seraient les bienvenus

  4. #4
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    Je prefererais utiliser LISTAGG https://www.ibm.com/support/knowledg...f_listagg.html
    a+

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    Salut à tous,

    Merci pour ces 2 liens, je vais essayer de regarder ça.

    Pour les données tests et le résultat attendu c'est ce que j'ai mis dans le premier post en fait, 1 élève peut avoir plusieurs options (angl, allemand, etc ...) qui apparaissent en BDD sur plusieurs lignes car chaque option à son ID et je voudrais que ces résultats soit concaténer sur une seule ligne.

    @ + et bonne journée.

  6. #6
    Membre actif
    Homme Profil pro
    Architecte technique & logiciel IBM i
    Inscrit en
    Septembre 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique & logiciel IBM i
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2010
    Messages : 179
    Points : 275
    Points
    275
    Par défaut
    Il y a aussi les fonctions "row_number() over(partition by {regroupementi} order by {tri})" et "union all". Je n'ai pas d'exemple simple sous la main, mais tu dois trouver sur le net.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    D'acc ça marche, je vais tester tout ça Merci encore.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 767
    Points : 10 764
    Points
    10 764
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Jamais utilisé, quelques exemples avec un échantillon des données en entrée et du résultat obtenu seraient les bienvenus
    J'avais ça (peu lisible mais qui marchait, je l'ai "anonymisé" pour des raisons de confidentialité) sur une plateforme AS400/fichiers (pas du DB2) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    select                                
      CLEREGROUP,
      xmlserialize(xmlagg(xmltext(concat(virg,                          
      DATA)))          
      as varchar( 160 ) ccsid 297 ), 2) DATA
      FROM TABLE
      cross join  qtemp/litvirg virg
    group by
      CLEREGROUP
    nous avons une table qui se présenterait comme ceci :
    CLEREGROUP DATA
    01 titi
    01 toto
    02 tutu
    02 tata

    qtemp/litvirg contient une ","
    du coup ça me donne une structure avec la cle et les données séparée par des virgules :
    01 titi, toto
    02 tutu, tata

    J'espère que c'est plus clair.
    Il y sans doute des moyens plus simples pour arriver à ce résultat.

    Le LISTAGG proposé plus haut par BERNARD semble beaucoup plus simple (mais inconnu sur ma version de l'AS400)!

  9. #9
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    Oui en effet le LISTAGG semble plus simple mais ma requête est vraiment longue et du coup je n'arrive pas à implémenter le LISTAGG ...

  10. #10
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    Voici un extrait de ma requête :

    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
    SELECT DISTINCT
        SC.ETAB.RNE AS RNE,
    	REPLACE(SC.EL_STR.C_STR,' ', '-') AS division,
     
    **************************
        SC.MAT_ENS.GEST_MATIERE_ENS AS options,
    **************************
     
    	LTRIM(SC.E.NOM_EL) AS nom_famille,
    	SC.E.NOM_USAGE_EL AS nom_usage,
    	SC.E.EL_ID AS ID_EL,
    	TO_CHAR(SC.E.DATE_NAISS_ELE, 'DD/MM/YYYY') AS date_naissance,
    	SC.E.TEL_PERSL AS portable_EL
     
    FROM SC.EL
    INNER JOIN SC.OPTION_EL ON (SC.OPTION_EL.EL_ID = SC.E.EL_ID)
    INNER JOIN SC.MAT_ENS ON (SC.MAT_ENS.MAT_ENS_ID = SC.OPTION_EL.MAT_ENS_ID)
    FULL JOIN SC.EL_PERS_ADR ON (SC.EL_PERS_ADR.EL_ID = SC.E.EL_ID)
    FULL JOIN SC.ADR ON (SC.PERS.ADR_ID = SC.ADR.ADR_ID)
     
    WHERE SC.ETAB.RNE IN ('xxxxxxxA')
     
    AND
    SC.E.DATE_SORTIE_ETAB IS NULL
     
    **************************
    GROUP BY SC.MAT_ENS.MAT_ENS_ID
    **************************
     
    ORDER BY SC.ETAB.RNE ASC;
    Les 2 lignes contenues dans les *************** sont celles que je dois intégrer pour récupérer les options des élèves.

    En écrivant juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SC.MAT_ENS.GEST_MATIERE_ENS AS options,
    Mes 3 options apparaissent sur mon élève test.

    Si vous avez une idée avec "xmlserialize" ou "LISTAGG" je suis preneur car je n'y arrive pas là ...

    D'avance merci à vous.

  11. #11
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par bernard59139 Voir le message
    Applicable uniquement depuis la V12

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 767
    Points : 10 764
    Points
    10 764
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Applicable uniquement depuis la V12
    J'avais du regarder à l'époque et effectivement je n'avais pas pu l'utiliser pour cette raison. D'où ma méthode "barbare".

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 767
    Points : 10 764
    Points
    10 764
    Par défaut
    Tu peux essayer ceci (il peut y avoir une erreur vu que je ne peux pas tester) :
    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
     
    SELECT DISTINCT
        SC.ETAB.RNE AS RNE,
    	REPLACE(SC.EL_STR.C_STR,' ', '-') AS division,
    *	
    **************************
            xmlserialize(xmlagg(xmltext(SC.MAT_ENS.GEST_MATIERE_ENS))) AS option 
    **************************
    *
    	LTRIM(SC.E.NOM_EL) AS nom_famille,
    	SC.E.NOM_USAGE_EL AS nom_usage,
    	SC.E.EL_ID AS ID_EL,
    	TO_CHAR(SC.E.DATE_NAISS_ELE, 'DD/MM/YYYY') AS date_naissance,
    	SC.E.TEL_PERSL AS portable_EL
    	SC.MAT_ENS.MAT_ENS_ID
    *
    FROM SC.EL
    INNER JOIN SC.OPTION_EL ON (SC.OPTION_EL.EL_ID = SC.E.EL_ID)
    INNER JOIN SC.MAT_ENS ON (SC.MAT_ENS.MAT_ENS_ID = SC.OPTION_EL.MAT_ENS_ID)
    FULL JOIN SC.EL_PERS_ADR ON (SC.EL_PERS_ADR.EL_ID = SC.E.EL_ID)
    FULL JOIN SC.ADR ON (SC.PERS.ADR_ID = SC.ADR.ADR_ID)
    *
    WHERE SC.ETAB.RNE IN ('xxxxxxxA')
    *
    AND
    SC.E.DATE_SORTIE_ETAB IS NULL
    *
     
    GROUP BY 
    ************************************************
    SC.ETAB.RNE,
    REPLACE(SC.EL_STR.C_STR,' ', '-'),
    LTRIM(SC.E.NOM_EL),
    SC.E.NOM_USAGE_EL,
    SC.E.EL_ID,
    TO_CHAR(SC.E.DATE_NAISS_ELE, 'DD/MM/YYYY'),
    SC.E.TEL_PERSL
    ************************************************
    *
    ORDER BY SC.ETAB.RNE ASC;

  14. #14
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    Je vais tester de suite et "tenter" de corriger les éventuels beugs mdr

    Merci beaucoup, c'est sympa !!!

  15. #15
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    Je déplace le REPLACE et le TRIM et les autres dans le GROUP BY ??????
    Pourquoi donc ?

    Ca ne fonctionne pas ....

    [Code: -4462, SQL State: ] [jcc][10234][10927][4.22.29] SQL transmis sans jeton. ERRORCODE=-4462, SQLSTATE=null

  16. #16
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    Je vous communique la requête un peu plus complète si ça peut aider car de mon côté ce n'est pas encore ça :

    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
    SELECT DISTINCT
            BDD.ETAB_UAJ.CODE_RNE AS RNE,
    	REPLACE(BDD.ELEMENT_STRUCTURE.CODE_STRUCTURE,' ', '-') AS division,
    	*********************
            xmlserialize(xmlagg(xmltext(BDD.MATIERE_ENSEIGNEE.GEST_MATIERE_ENS))) AS option,
    	*********************
    	REPLACE(REPLACE(BDD.ELEVE.SEXE_ID, '1', 'M'), '2', 'F') AS civilite,
    	LTRIM(BDD.ELEVE.NOM_ELEVE) AS nom_famille,
    	BDD.ELEVE.NOM_USAGE_ELEVE AS nom_usage,
    	COALESCE(BDD.ELEVE.PRENOM_ELEVE,'')||' '||
    	COALESCE(BDD.ELEVE.PRENOM2_ELEVE,'')||' '||
    	COALESCE(BDD.ELEVE.PRENOM3_ELEVE,'') as prenoms,
    	BDD.ELEVE.ID_NATIONAL AS ine,
    	BDD.ELEVE.ELEVE_ID AS ID_ELEVE,
    	BDD.PAYS.CODE_PAYS AS pays_naissance,
    	TO_CHAR(BDD.ELEVE.DATE_NAISS_ELE, 'DD/MM/YYYY') AS date_naissance,
    	BDD.DEPT.CODE_DEPARTEMENT AS depCOM_naissance,	
    	CASE WHEN BDD.COMMUNE_INSEE.CODE_COMMUNE_INSEE ISNULL THEN BDD.ELEVE.VILLE_NAISSANCE ELSE BDD.COMMUNE_INSEE.CODE_COMMUNE_INSEE END AS commune_naissance,
    	(SELECT BDD.PAYS.CODE_PAYS
    	       FROM BDD.PAYS
    	       WHERE BDD.PAYS.PAYS_ID = BDD.ELEVE.NATIONALITE_PAYS_ID) AS nationalite,
    	CASE WHEN BDD.ELEVE.ADRESSE_ID IS NULL THEN (SELECT BDD.PAYS.CODE_PAYS FROM BDD.PAYS WHERE BDD.PAYS.PAYS_ID = (SELECT BDD.ADRESSE.PAYS_ID FROM BDD.ADRESSE WHERE BDD.ADRESSE.ADRESSE_ID = BDD.PERSONNE.ADRESSE_ID))
    	       ELSE (SELECT BDD.PAYS.CODE_PAYS FROM BDD.PAYS WHERE BDD.PAYS.PAYS_ID = (SELECT BDD.ADRESSE.PAYS_ID FROM BDD.ADRESSE WHERE BDD.ADRESSE.ADRESSE_ID = BDD.ELEVE.ADRESSE_ID))
    	       END AS pays_residence,	
    	BDD.ELEVE.TEL_PERSONNEL AS portable_eleve,
    	BDD.ELEVE.EMAIL_ELEVE AS email_pers_a_contacter,
    	BDD.ELEVE.TEL_PORTABLE AS portable_pers_a_contacter
     
    FROM BDD.ELEVE
    INNER JOIN BDD.MEF ON (BDD.MEF.MEF_ID = BDD.ELEVE.MEF_ID)
    INNER JOIN BDD.OPTION_ELEVE ON (BDD.OPTION_ELEVE.ELEVE_ID = BDD.ELEVE.ELEVE_ID)
    INNER JOIN BDD.MATIERE_ENSEIGNEE ON (BDD.MATIERE_ENSEIGNEE.MATIERE_ENSEIGNEE_ID = BDD.OPTION_ELEVE.MATIERE_ENSEIGNEE_ID)
    INNER JOIN BDD.ETAB_UAJ ON (BDD.ELEVE.ETAB_UAJ_ID = BDD.ETAB_UAJ.ETAB_UAJ_ID)
    FULL JOIN BDD.COMMUNE_INSEE ON (BDD.ELEVE.COMMUNE_INSEE_ID = BDD.COMMUNE_INSEE.COMMUNE_INSEE_ID)
    FULL JOIN BDD.DEPT ON (BDD.DEPT.DEPT_INSEE_ID = BDD.COMMUNE_INSEE.DEPT_INSEE_ID)
    INNER JOIN BDD.PAYS ON (BDD.PAYS.PAYS_ID = BDD.ELEVE.PAYS_ID)
    INNER JOIN BDD.ELEVE_STRUCTURE ON (BDD.ELEVE_STRUCTURE.ELEVE_ID = BDD.ELEVE.ELEVE_ID)
    INNER JOIN BDD.ELEMENT_STRUCTURE ON (BDD.ELEMENT_STRUCTURE.STRUCTURE_ID = BDD.ELEVE_STRUCTURE.STRUCTURE_ID)
    FULL JOIN BDD.ELEVE_PERSONNE_ADRESSE ON (BDD.ELEVE_PERSONNE_ADRESSE.ELEVE_ID = BDD.ELEVE.ELEVE_ID)
    FULL JOIN BDD.PERSONNE ON (BDD.ELEVE_PERSONNE_ADRESSE.PERSONNE_ID = BDD.PERSONNE.PERSONNE_ID)
    FULL JOIN BDD.ADRESSE ON (BDD.PERSONNE.ADRESSE_ID = BDD.ADRESSE.ADRESSE_ID)
     
    WHERE BDD.ETAB_UAJ.CODE_RNE IN ('XXXXXXXA')
     
    AND
    BDD.ELEVE.DATE_SORTIE_ETAB IS NULL
     
    *********************
    GROUP BY
    BDD.ETAB_UAJ.CODE_RNE,
    REPLACE(BDD.ELEMENT_STRUCTURE.CODE_STRUCTURE,' ', '-'),
    LTRIM(BDD.ELEVE.NOM_ELEVE),
    BDD.ELEVE.NOM_USAGE_ELEVE,
    BDD.ELEVE.ELEVE_ID,
    TO_CHAR(BDD.ELEVE.DATE_NAISS_ELE, 'DD/MM/YYYY'),
    BDD.ELEVE.TEL_PERSONNEL
    *********************
     
    ORDER BY BDD.ETAB_UAJ.CODE_RNE ASC;
    J'ai l'erreur -440 qui apparaît :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1) [Code: -440, SQL State: 42884]  La routine autorisée appelée "XMLSERIALIZE" de type "FUNCTION" et dont les arguments sont compatibles est introuvable.. SQLCODE=-440, SQLSTATE=42884, DRIVER=4.22.29
    2) [Code: -727, SQL State: 56098]  Une erreur s'est produite lors d'une action système implicite de type "2". Les informations renvoyées pour l'erreur comprennent le SQLCODE "-440", le SQLSTATE "42884" et les jetons de message "XMLSERIALIZE|FUNCTION".. SQLCODE=-727, SQLSTATE=56098, DRIVER=4.22.29

  17. #17
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 767
    Points : 10 764
    Points
    10 764
    Par défaut
    En fait le group by doit contenir toutes tes colonnes autres que celle qui contient des données en ligne (comme quand on fait une somme). Sinon ça n'a pas de sens.
    Mais il semblerait que ta plateforme DB2 ne soit pas compatible avec la fonction XMLSERIALIZE (si l'on regarde le message d'erreur).

  18. #18
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    Je l'ignorais mais j'en prends note, merci !

  19. #19
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2018
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Darkzinus Voir le message
    En fait le group by doit contenir toutes tes colonnes autres que celle qui contient des données en ligne (comme quand on fait une somme). Sinon ça n'a pas de sens.
    Mais il semblerait que ta plateforme DB2 ne soit pas compatible avec la fonction XMLSERIALIZE (si l'on regarde le message d'erreur).
    Et il existerait une alternative ?? MAJ de DBVisualiser ? Ou autre syntaxe ?

  20. #20
    Expert éminent sénior
    Homme Profil pro
    Ingénieur d'Etude Mainframe/AS400
    Inscrit en
    Novembre 2012
    Messages
    1 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'Etude Mainframe/AS400
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1 767
    Points : 10 764
    Points
    10 764
    Par défaut
    Citation Envoyé par LudoV63 Voir le message
    Et il existerait une alternative ?? MAJ de DBVisualiser ? Ou autre syntaxe ?
    Là ça n'est pas l'outil en cause, c'est la version de DB2. DBVisualiser n'est pas en cause. Je ne connais pas d'autre moyen mais quelqu'un d'autre ici peut avoir une autre idée (je ne suis pas expert en SQL même si je pratique beaucoup).

Discussions similaires

  1. [Débutant] Récupérer les données d'une table liée et les afficher dans une vue.
    Par Lotfiphp dans le forum ASP.NET MVC
    Réponses: 13
    Dernier message: 15/06/2018, 00h25
  2. Réponses: 3
    Dernier message: 09/05/2018, 17h35
  3. Réponses: 7
    Dernier message: 03/04/2018, 13h16
  4. [Python 3.X] Récupérer les logs de Python pour les afficher dans une IHM (PyQt)
    Par guy16 dans le forum Général Python
    Réponses: 16
    Dernier message: 12/09/2015, 09h16
  5. Récupérer données formulaire et les afficher dans une liste à puce
    Par johnny3 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 06/02/2010, 20h38

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