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

Requêtes MySQL Discussion :

presque un defis SQL


Sujet :

Requêtes MySQL

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut presque un defis SQL
    Bonsoir a tous,
    je termine sur le forum car je crois que j'ai epuiser toutes mes ressources pour resoudre ce probleme.
    Je vous explique, il s'agit de creer une table a partir d'une requete, jusque la pas de probleme. Le soucis est dans la source des données.

    Soit la table A avec un champs ID et un champs de type longtext
    Ce champs contient du XML

    je vous donne en fichier joins le XML qui se trouve dans ce champs.
    Dans le XML il y a un champs 866 avec des sous champs a et z. J'arrive a extraire les données grace a cette requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select
    		ExtractValue( marcxml,  '//datafield[@tag="866"]/subfield[@code="a"]' ) as A,
    		ExtractValue( marcxml,  '//datafield[@tag="866"]/subfield[@code="z"]') as Z
    from biblioitems
    where biblionumber=16;
    Le resultat est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    --------------------------------------------------------------------------------------------------------
    | A                                                                                                     
    +-------------------------------------------------------------------------------------------------------
    | Any inf.: 1961 Ed. s.a. Any inf.: 1965 Ed. s.a. v. 1-2 Any inf.: 1966 Ed. s.a. Any inf.: 1967 Ed. s.a.
    +-------------------------------------------------------------------------------------------------------
    | Z
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------
     v. 1-2 v. 1-2 v. 1 Guia v. 2 PlÃ*nols v. 1 Guia v. 2 PlÃ*nols v. 1 Guia v. 2 PlÃ*nols 
    ---------------------------------------------------------------------------------------
    J'ai coupé le resultat car il y a plus de lignes...

    Mais voila, avec le extractvalue tous les 866 a et les 866 z du XML sortent dans le même tuple.
    Je donne ici un extrait du XML pour mieux comprendre:

    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
     <datafield tag="866" ind1=" " ind2="0">
        <subfield code="8">2.34</subfield>
        <subfield code="a">Any inf.: 1997 Ed. 1997</subfield>
        <subfield code="z">v. 1-2</subfield>
      </datafield>
      <datafield tag="866" ind1=" " ind2="0">
        <subfield code="8">2.35</subfield>
        <subfield code="a">Any inf.: 1998 Ed. 1998</subfield>
        <subfield code="z">v. 1 Guia</subfield>
      <datafield tag="866" ind1=" " ind2="0">
        <subfield code="8">2.36</subfield>
        <subfield code="a">Any inf.: 1998 Ed. 1998</subfield>
        <subfield code="z">v. 2 PlÃ*nols</subfield>
      </datafield>
      <datafield tag="866" ind1=" " ind2="0">
        <subfield code="8">2.37</subfield>
        <subfield code="a">Any inf.: 1999 Ed. 1999</subfield>
        <subfield code="z">v. 1 Guia</subfield>
      </datafield>
      <datafield tag="866" ind1=" " ind2="0">
        <subfield code="8">2.38</subfield>
        <subfield code="a">Any inf.: 1999 Ed. 1999</subfield>
        <subfield code="z">v. 2 PlÃ*nols</subfield>
    Donc le select marche bien vue que j'ai plusieurs Any inf.: XXXX qui correspond au 866 a
    et v. 1 ou v.2 XXXX qui correspond au 866 z

    Ce que je voudrais c'est avoir un tuple par datafiled

    exemple:
    id a z
    16 Any inf.: 1999 Ed. 1999 v. 1 Guia
    16 Any inf.: 1998 Ed. 1998 v. 2 PlÃ*nols

    plutôt que dans un seul tuple:
    16 Any inf.: 1999 Ed. 1999 Any inf.: 1998 Ed. 1998 v. 1 Guia v. 2 PlÃ*nols

    voila je suis pas sur d'avoir ete tres claire.
    Le truc serait de trouver la forme de separer chaque <datafield tag="866"></datafield> pour en faire une ligne pour chaque au lieu d'avoir tout dans la même ligne...

    Seulement en SQL ou CODE MYSQL mais c'est pas possible d'avoir du shell ou python ou php.
    Est ce possible?
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PL/SQL] [9i] Ca prend un temps infini (ou presque !)
    Par ftrifiro dans le forum Oracle
    Réponses: 5
    Dernier message: 27/03/2006, 15h12
  2. Pb migration Access / SQL server
    Par yoyo dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 25/04/2005, 10h39
  3. [Defi] Query SQL qui semble tres simple
    Par Wakko2k dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/04/2004, 10h01
  4. Cours, tutoriels, logiciels, F.A.Q,... pour le langage SQL
    Par Marc Lussac dans le forum Langage SQL
    Réponses: 0
    Dernier message: 04/04/2002, 10h21

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