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

MS SQL Server Discussion :

Requête avec Groupe by / Having de donnée XML


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Par défaut Requête avec Groupe by / Having de donnée XML
    Bonjour,

    J'ai besoin de vos lumière.
    Actuellement je cherche a réaliser une requête de se style (elle est très simplifié) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT cast(table.champ.value('(/intJour)[1]', 'varchar(200)') as Int) AS intJour 
    FROM mestables
    GROUP BY table.champ
    HAVING (   COUNT(cast(table.champ.value('(/intJour)[1]', 'varchar(200)') as Int)) = 0 )
    Hors, je rencontre le problème suivant :
    "Le type de données XML ne peut pas être comparé ni trié, sauf lors de l'utilisation de l'opérateur IS NULL."

    Pour passer outre ceci, on m'a conseillé de passer la donnée xml par une variable, mais j'avous qu'en y réfléchissant je vois pas comment, quoi et de qu'elle type srai ma variable.
    Qulqu'un aurai-t-il une idée pour que je puisse réaliser ma requpete ?

    Merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Il vous faut séparer l'extraction des données en XML de l'agrégation des données, par exemple à l'aide d'une expression de table commune :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ;WITH
    	CTE AS
    	(
    		SELECT	champ
    			, champ.value('(/intJour)[1]', 'int') AS intJour
    		FROM	dbo.mestables
    	)
    SELECT	*
    FROM	CTE
    GROUP	BY champ
    HAVING	COUNT(*) = 0
    @++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Par défaut
    En effet, cela fonctionne bien.

    Je ne veux pas être trop exigeant, cette solution étant déjà très intéressante, je me demande si il éxiste ue autre solution, je m'explique :
    Les requête se créée de manière automatique (suivant des choix de l'utilisateur), et donc le texte SQL est regénéré seul (sans retouche à la main), et je recherche donc la façon la plus simple pour addapter les modifications nécessaires à cette régénération.

    La réponse précédente est tout de même forte intéressante et je pense applicable (mais si je peut passer le moins de temps à effectuer les modification de régénération, je suis preneur)

    Merci pour la réponse très intéressante et qui fonctionne en tout cas

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Les requête se créée de manière automatique (suivant des choix de l'utilisateur), et donc le texte SQL est regénéré seul (sans retouche à la main), et je recherche donc la façon la plus simple pour addapter les modifications nécessaires à cette régénération.
    Vous pouvez faire cela en T-SQL dynamique, comme je l'ai montré ici

    @++

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Par défaut
    Merci bcp pour toute cette aide,

    Je vais voir ce que je peut faire avec toutes ses informations.

    Merci beaucoup

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

Discussions similaires

  1. Syntaxe d'une requête avec GROUP
    Par gvdmoort dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/10/2006, 15h10
  2. Requête avec Group by sur Oracle 8i
    Par madina dans le forum Oracle
    Réponses: 14
    Dernier message: 16/06/2006, 12h41
  3. requête avec group by...
    Par JerBi dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/03/2006, 03h17
  4. Problème requête avec group by et distinct
    Par tomca dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/07/2005, 16h10
  5. requête avec group by
    Par Staron dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/11/2004, 16h30

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