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

  1. #1
    bm
    bm est déconnecté
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2002
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : octobre 2002
    Messages : 764
    Points : 435
    Points
    435
    Billets dans le blog
    6

    Par défaut [Xquery] Requete qui exclus des champs 'null'

    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let $b := doc("factbook") /mondial/country[@name="Japan"]/province/city/[population/text() ,name/text()]
    return $b
    J'obtiens 49 couples [ population , ville ] :

    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
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    [
      "1748000",
      "Sapporo"
    ]
    [
      null,
      "Aomori"
    ]
    [
      null,
      "Morioka"
    ]
    [
      "967000",
      "Sendai"
    ]
    [
      null,
      "Akita"
    ]
    [
      null,
      "Yamagata"
    ]
    [
      null,
      "Fukushima"
    ]
    [
      null,
      "Mito"
    ]
    [
      null,
      "Utsonomiya"
    ]
    [
      null,
      "Maebashi"
    ]
    [
      null,
      "Urawa"
    ]
    [
      "843000",
      "Chiba"
    ]
    [
      "7843000",
      "Tokyo"
    ]
    [
      "3256000",
      "Yokohama"
    ]
    [
      "1187000",
      "Kawasaki"
    ]
    [
      null,
      "Niigata"
    ]
    [
      null,
      "Toyama"
    ]
    [
      null,
      "Kanazawa"
    ]
    [
      null,
      "Fukui"
    ]
    [
      null,
      "Kofu"
    ]
    [
      null,
      "Nagano"
    ]
    [
      null,
      "Gifu"
    ]
    [
      null,
      "Shizuoka"
    ]
    [
      "2108000",
      "Nagoya"
    ]
    [
      null,
      "Tsu"
    ]
    [
      null,
      "Otsu"
    ]
    [
      "1415000",
      "Kyoto"
    ]
    [
      "2492000",
      "Osaka"
    ]
    [
      "1388000",
      "Kobe"
    ]
    [
      null,
      "Nara"
    ]
    [
      null,
      "Wakayama"
    ]
    [
      null,
      "Tottori"
    ]
    [
      null,
      "Matsue"
    ]
    [
      null,
      "Okayama"
    ]
    [
      "1099000",
      "Hiroshima"
    ]
    [
      null,
      "Yamaguchi"
    ]
    [
      null,
      "Tokushima"
    ]
    [
      null,
      "Takamatsu"
    ]
    [
      null,
      "Matsuyama"
    ]
    [
      null,
      "Kochi"
    ]
    [
      "1273000",
      "Fukuoka"
    ]
    [
      "1012000",
      "Kita kyushu"
    ]
    [
      null,
      "Saga"
    ]
    [
      null,
      "Nagasaki"
    ]
    [
      null,
      "Kumamoto"
    ]
    [
      null,
      "Oita"
    ]
    [
      null,
      "Miyazaki"
    ]
    [
      null,
      "Kagoshima"
    ]
    [
      null,
      "Naha"
    ]
    Comment ne garder que les couples qui ont un champs non 'null' ?
    Et après classer les couples par population décroissante ?

    Il vaut mieux proposer des solutions alternatives que de chercher le consensus général
    Le [-1] est la faucheuse du champs de maïs qui se rend insupportable :
    [-52] Novembre 2016
    [-60] Mai 2017
    Modération : Pourquoi le profil perso ne compile pas les [-1] dans un ramasse-miette pour faire sortir du jus de banane
    Le jus de banane des statistiques de [Résolution] n'est pas admis dans les forums

  2. #2
    bm
    bm est déconnecté
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2002
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : octobre 2002
    Messages : 764
    Points : 435
    Points
    435
    Billets dans le blog
    6

    Par défaut

    https://xml.developpez.com/cours/?page=tech#xquery

    Le tutorial et ses 3 url, n'ouvre pas la porte vers Xquery ...

    Il vaut mieux proposer des solutions alternatives que de chercher le consensus général
    Le [-1] est la faucheuse du champs de maïs qui se rend insupportable :
    [-52] Novembre 2016
    [-60] Mai 2017
    Modération : Pourquoi le profil perso ne compile pas les [-1] dans un ramasse-miette pour faire sortir du jus de banane
    Le jus de banane des statistiques de [Résolution] n'est pas admis dans les forums

  3. #3
    Membre chevronné
    Inscrit en
    octobre 2011
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 239
    Points : 2 171
    Points
    2 171

    Par défaut

    essayez-le...
    Code xquery : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (: let $b := doc("factbook") /mondial/country[@name="Japan"]/province/city/[population/text() ,name/text()] :)
    let $b := doc("factbook") /mondial/country[@name="Japan"]/province/city[population]/[population/text() ,name/text()]

  4. #4
    bm
    bm est déconnecté
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2002
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : octobre 2002
    Messages : 764
    Points : 435
    Points
    435
    Billets dans le blog
    6

    Par défaut

    essayez-le... C'est le même !
    C'est pas grave, j'utilise python et la lib Lxml

    libxml2.2.0 est sortie en 2000

    C'est la librairie de parsing XML écrite en C utilisée dans un grand
    nombre d'applications comme Gnumeric.
    Elle inclut les parseur SAX, DOM et HTML.
    Il vaut mieux proposer des solutions alternatives que de chercher le consensus général
    Le [-1] est la faucheuse du champs de maïs qui se rend insupportable :
    [-52] Novembre 2016
    [-60] Mai 2017
    Modération : Pourquoi le profil perso ne compile pas les [-1] dans un ramasse-miette pour faire sortir du jus de banane
    Le jus de banane des statistiques de [Résolution] n'est pas admis dans les forums

  5. #5
    Membre chevronné
    Inscrit en
    octobre 2011
    Messages
    1 239
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 239
    Points : 2 171
    Points
    2 171

    Par défaut

    Le résultat pourrait être le même, mais ce n'est pas le même au point de vue de conception et c'est important de savoir à votre coté si vous voulez travailler avec xquery façon serieuse.

    Voici un xpath encore plus serré pour résoudre les cas on veut débarrser.
    Code xquery : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (: let $b := doc("factbook") /mondial/country[@name="Japan"]/province/city/[population/text() ,name/text()] :)
    (: let $b := doc("factbook") /mondial/country[@name="Japan"]/province/city[population]/[population/text() ,name/text()] :)
    let $b := doc("factbook") /mondial/country[@name="Japan"]/province/city[population and (population/text() != '')]/[population/text() ,name/text()]
    ps : Je connais libxml2; c et python ne me gène pas. Tout ça je connais pas mal, mais on ne connaît toujours pas assez. Ceci dit, je ne vante jamais tout ça parce que d'abord c'est vain et puis que xquery en soi est langage agnostique. Je dis cela pour disperser les diversions plutôt que focalisant sur des problèmes. Il y a des problèmes associés aux implémentations, bien entendu, et si c'est le cas, il faut le annoncer et montrer le code concerné plutôt que prenant un langage de programmation comme un joker pour faire de diversion.

  6. #6
    bm
    bm est déconnecté
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2002
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : octobre 2002
    Messages : 764
    Points : 435
    Points
    435
    Billets dans le blog
    6

    Par défaut

    J'y reviens et la sélection != est valable
    Mais après comment faire une somme ou une moyenne sur les nombres
    Ici cela donne 0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    let $b := doc("factbook") /mondial/country[@name="Japan"]/province/city[population and (population/text() != '')]/[population/text() ,name/text()]
    return ($b,xs:int(sum($b[0])))
    [
    "1748000",
    "Sapporo"
    ]
    [
    "967000",
    "Sendai"
    ]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    let $dd := doc("factbook") /mondial/country[@name="Japan"]/province/city[population and (population/text() != '')]/[population/text() ,name/text()]
    let $pop := doc("factbook") /mondial/country[@name="Japan"]/province/city[population and (population/text() != '')]/population/text()
    return ($dd,xs:int(avg($pop)))
    En doublant le let c'est bon ( il en faut 1 pour l'affichage et 1 pour le calcul )
    ...
    Il vaut mieux proposer des solutions alternatives que de chercher le consensus général
    Le [-1] est la faucheuse du champs de maïs qui se rend insupportable :
    [-52] Novembre 2016
    [-60] Mai 2017
    Modération : Pourquoi le profil perso ne compile pas les [-1] dans un ramasse-miette pour faire sortir du jus de banane
    Le jus de banane des statistiques de [Résolution] n'est pas admis dans les forums

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

Discussions similaires

  1. pb de requete avec des champs null
    Par karenv5 dans le forum Requêtes
    Réponses: 4
    Dernier message: 17/05/2010, 10h26
  2. [PostGreSQL] Requête d'insertion qui ajoute des champs vides
    Par civodultrebor37 dans le forum PHP & SGBD
    Réponses: 6
    Dernier message: 30/10/2006, 14h16
  3. Requete avec des champs null
    Par passie dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/06/2006, 15h11
  4. Réponses: 3
    Dernier message: 28/02/2006, 17h52
  5. somme des champs null
    Par s.rais dans le forum Access
    Réponses: 4
    Dernier message: 09/02/2006, 09h05

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