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

Développement SQL Server Discussion :

Aide sur une requête SQL


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Par défaut Aide sur une requête SQL
    Bonjour à tous,

    Non spécialiste en SQL, je viens vous demander une petite aide

    Dans une table j'ai un champ "Mots" qui contient un ou plusieurs mots séparés par une virgule.
    Je dois obtenir une liste de tous ces mots sans doublons avec, pour chacun d'eux, son nombre d’occurrences dans la table.

    Est-ce faisable par une simple requête SQL ? Auriez-vous une piste à me donner ?

    Merci d'avance,
    Emphyrio

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Utilisez la fonction MultiParse que j'ai donné ici :
    http://blog.developpez.com/sqlpro/p7...esure_multiple

    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT MOT, COUNT(*) 
    FROM   dbo.F_MULTIPARSE('toto,tata,titi', ',') 
    GROUP  BY MOT
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Au passage, le fait de mettre plusieurs informations dans une même colonne est un viol de la première forme normale et conduit à des performances lamentables.
    Revoyez votre modèle de données.....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Par défaut
    Bonjour,

    Merci pour votre réponse.
    Cependant dans votre exemple, la chaine contenant les noms est en "dur". Dans mon cas elle est dans un champ et différente pour chaque enregistrement.
    Je sais que ce n'est probablement pas la meilleure forme pour le modèle de donnée, mais ça s'explique :
    - Le champ en question est une liste de noms de fichiers variable de 0 à x, rattachée à chaque enregistrement.
    - Cette base de données n'a pas besoin d'être très performante car elle se contente de conserver des informations qui seront interrogées sporadiquement par un maximum de 2 personnes(!) et probablement pas simultanément.
    - Cette requête est très secondaire dans l'application. Une petite demande statistique de dernière minute du client (nombre d'occurrence de chaque nom de fichier dans la table).

    Donc, comment faire en ayant une liste de noms différente dans chaque enregistrement ?

    Si je devais le faire "à la main", je ferais quelque chose comme ça :

    - Récupérer le contenu de tous les champs "Noms_de_fichiers" pour tous les enregistrements dans une liste.

    - Eliminer les doublons de cette liste.

    - Pour chaque élément de la liste, le chercher dans la table et compter le nom d'occurrences.

    Y a-t-il un moyen de faire ça en une seule requête SQL ou dois-je passer par toutes ces étapes ? Avec plusieurs requêtes ? En utilisant votre fonction ?

    Merci d'avance pour votre aide.
    Emphyrio

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Commencez par nous donner la structure de votre table sous forme DDL en vous conformant à la charte de postage : http://www.developpez.net/forums/d96...vement-poster/

    Dès lors, cette même requête pourra être adaptée à votre cas !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Par défaut
    Pas de problème
    Voici le code de la table tel que me l'a généré Management Studio (désolé, mais contrairement à ce que disent les explications sur le lien que vous m'avez donné, je n'ai pas de boutons pour formater le code...) :

    CREATE TABLE [dbo].[Messages_Test](
    [ID_Unique] [nchar](50) NULL,
    [Date] [nchar](14) NULL,
    [Expediteur] [nchar](260) NULL,
    [SendTo] [nchar](260) NULL,
    [Subject] [nchar](100) NULL,
    [body] [varchar](max) NULL,
    [Noms_pieces_jointes] [nchar](500) NULL
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

    En gros, le but de cette table est d'enregistrer des infos sur les messages d'un système de messagerie et de pouvoir faire quelques recherche et statistiques dessus.

    Le champ [Noms_pieces_jointes] peut être vide ou contenir x noms de fichiers séparés par une virgule (ou n'importe quel autre caractère qui conviendrait).

    La demande : calculer le nombre d'occurrence de chaque "nom de pièce jointe" dans la table.

    Merci d'avance !
    Emphyrio

Discussions similaires

  1. demande d'aide sur une requête sql serveur
    Par PHPkoala dans le forum Développement
    Réponses: 8
    Dernier message: 30/09/2009, 15h11
  2. Aide sur une requête SQL Server
    Par Morad ISSOULGHANE dans le forum Développement
    Réponses: 4
    Dernier message: 30/09/2009, 11h58
  3. aide sur une requête sql
    Par sanach dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 27/02/2008, 16h43
  4. aide sur une requête sql
    Par sanach dans le forum Développement
    Réponses: 9
    Dernier message: 17/10/2007, 20h42
  5. aide sur une requête sql
    Par sanach dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 17/10/2007, 20h42

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