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

XSL/XSLT/XPATH XML Discussion :

Faire un distinct count suite à plusieurs group by


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Faire un distinct count suite à plusieurs group by
    Bonjour,

    voici la structure de mon xml
    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
     
    <racine>
    <observation>
            <code>
    		<id>AAA</id>
    		<intitule>Matériaux</intitule>
    		<libelle>
    			<caracteristiques>
    		             <caracteristique>A</caracteristique>
    		             <caracteristique>B</caracteristique>
    			</caracteristiques>
    		</libelle>
    	</code>
    </observation>
    </racine>
    ce que je voudrais en sortie c'est par exemple
    AAA (A-B) : total = 1

    j'ai donc commencé par faire un group by sur l'id mais cela n'est pas suffisant comme vous l'aurez compris.

    de plus, j'ai pensé à des méthodes mais elles sont fastidieuses.
    ex: faire un for-each dans lequel je construis mon id : AAA.A.B.
    et ensuite je les compte.

    je pense qu'il y a plus simple donc merci de m'aider

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    rebonjour !
    apparemment personne n'a d'idées..

    j'ai implémentée une solution mais ce n'est pas la meilleure et d'ailleurs j'en vois les limites maintenant

    en fait j'ai 2 fichiers xml et deux fichiers xsl.
    je m'explique

    DATA.XML
    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
     
    <racine>
    <observation>
            <code>
    		<id>AAA</id>
    		<intitule>Matériaux</intitule>
    		<libelle>
    			<caracteristiques>
    		             <caracteristique>A</caracteristique>
    		             <caracteristique>B</caracteristique>
    			</caracteristiques>
    		</libelle>
    	</code>
    </observation>
    </racine>
    data.xml -> resume.xml via resumer_codes.xslt
    ce fichier xml a cette allure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <root>
    <code id="BAK.B.A" libelle="test1" />
    <code id="BAQ.A" libelle="test2" />
    </root>
    ensuite je réalise data.xml -> result.html via final.xslt
    dans final.xslt je fais plein de traitement et arrive un moment ou je veux faire ce que j'ai expliqué avant:
    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
     
    <xsl:key name="regrouper" match="id" use="."/>
    ...
    <xsl:apply-templates select="racine/observations/observation/code/id[generate-id(.)=generate-id(key('regrouper',.)[1])]"/>
     
    <xsl:template match="id">
    <xsl:variable name="newcode">
    		<xsl:value-of select="concat(. , '.', ../libelle/caracteristiques/caracteristique[1], ../libelle/caracteristiques/caracteristique[2])"/>
    	</xsl:variable>
     
    	<tr>
    				<td><xsl:value-of select="$newcode"/></td>
    				<td align="center"><xsl:value-of select="document('../XML/toto.xml')/root/code[@id=$newcode]/@libelle"/></td>
    				<td><xsl:value-of select="count(document('../XML/toto.xml')/root/code[@id=$newcode])"/></td>
    			</tr>
    </xsl:template>
    et donc mon problème est que je réalise un "select distinct" sur les id et qu'après je les compte dans le fichier xml intermédiaire.
    ex: si j'ai bab.a.a, bab.d.d, bab.a.a
    j'aurai qu'une seule ligne bab.a.a total =2..

    si quelqu'un a tout compris et peut m'aider j'en serai hyper content
    merci

Discussions similaires

  1. Faire un select count distinct
    Par samsso2006 dans le forum Développement
    Réponses: 9
    Dernier message: 06/07/2010, 20h06
  2. Comment faire un Count() sans un group by interminable ?
    Par olibara dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 14/08/2009, 17h09
  3. faire un distinct sur plusieurs colonnes
    Par elekis dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/03/2009, 13h23
  4. Réponses: 1
    Dernier message: 01/07/2008, 10h52
  5. max(count(*)) avec un GROUP BY (suite)
    Par awalter1 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/09/2007, 15h07

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