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

Optimisations SGBD Discussion :

Plusieurs potentiels prénoms


Sujet :

Optimisations SGBD

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Japon

    Informations forums :
    Inscription : Novembre 2007
    Messages : 125
    Points : 92
    Points
    92
    Par défaut Plusieurs potentiels prénoms
    Bonjour,

    On est sur un service où on doit stocker les noms et tous les prénoms de nos clients.
    Nos développeurs fournissent ce genre de table

    ID (int)
    Nom (varchar 50)
    Prenom_1 (varchar 50)
    Prenom_2(varchar 50)
    Prenom_3(varchar 50)
    Prenom_4(varchar 50)
    Prenom_5(varchar 50)

    En sachant qu'on a tous un prénom et que +- 70% des personnes ont un 2ème prénom et que moins de 50% ont un 3ème prénom, et je ne parle même pas des 4ème et 5ème prénom.

    Je penserai plus vers une structure à 2 tables comme ça:

    Client
    ID (INT)
    Nom (varchar 50)
    Prenom (varchar 50)

    Client_prénom
    ID (int)
    Prénom (varchar 50)
    Ordre (varchar 50)

    Selon vous, quelle serait la meilleure solution ?

    Merci.

    ps: on tourne sur MSSQL 2008 R2

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 016
    Points
    34 016
    Billets dans le blog
    14
    Par défaut
    Effectivement, la seconde structure est meilleure. Et quitte à séparer les prénoms, autant séparer aussi le premier prénom !
    Surtout que tes clients ne sont (ou ne seront) peut-être pas tous des personnes physiques avec prénom mais aussi des personnes morales sans prénom !

    Au fait, ça existe des prénoms de 50 caractères ? Un VARCHAR(30) ne serait-il pas suffisant ?

    Quant à l'ordre, un TINYINT serait plus approprié !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  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 716
    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 716
    Points : 52 380
    Points
    52 380
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par mikaeru Voir le message
    Bonjour,

    On est sur un service où on doit stocker les noms et tous les prénoms de nos clients.
    Nos développeurs fournissent ce genre de table

    ID (int)
    Nom (varchar 50)
    Prenom_1 (varchar 50)
    Prenom_2(varchar 50)
    Prenom_3(varchar 50)
    Prenom_4(varchar 50)
    Prenom_5(varchar 50)

    En sachant qu'on a tous un prénom et que +- 70% des personnes ont un 2ème prénom et que moins de 50% ont un 3ème prénom, et je ne parle même pas des 4ème et 5ème prénom.

    Je penserai plus vers une structure à 2 tables comme ça:

    Client
    ID (INT)
    Nom (varchar 50)
    Prenom (varchar 50)

    Client_prénom
    ID (int)
    Prénom (varchar 50)
    Ordre (varchar 50)

    Selon vous, quelle serait la meilleure solution ?

    Merci.

    ps: on tourne sur MSSQL 2008 R2
    Ni l'une ni l'autre....

    En effet vous aurez de la redondance !

    la solution je l'ai donné dans le modèle ici :
    http://blog.developpez.com/exercices...-de-personnes/

    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 régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Japon

    Informations forums :
    Inscription : Novembre 2007
    Messages : 125
    Points : 92
    Points
    92
    Par défaut
    Bonjour,
    Merci pour votre réponse.
    En effet, du tinyint est plus approprié pour l'ordre, petite erreur de clavier

    Sinon cette table ne s’occupera que de personne physique, et que le 1er prénom sera souvent affiché.

    Et merci pour le lien, je lirai en cours de journée, car bien que cela me sera utile, et que j'en suis reconnaissant, mais ce qui y est décrit dépasse « un peu » mes besoins.

    Si on parle du coté logique de la chose j’opterai directement pour une table à part, mais entre les best practice et ce qui est optimal il y a souvent une marge en READ et WRITE.

    Sinon qu’elle serait selon vous de bon argument pour favorisé la table ‘prénom’

    +
    Normalisation
    Espace gagné


    -
    Un chouia plus compliqué pour les inserts
    Prise de tête avec les développeurs pour leur faire changer d’avis (^^)


    Encore merci pour votre temps

  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 716
    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 716
    Points : 52 380
    Points
    52 380
    Billets dans le blog
    4
    Par défaut
    Il n'y a que des avantages et aucun inconvénient à utiliser ce modèle, tant sur le plan de la facilité de requêtage que sur les performances.

    mais pour le comprendre, il faut implémenter le MED (Modèle Externe de Données) c'est à dire les vues, ce qu'hélas peu de développeurs font.

    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
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 016
    Points
    34 016
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    il faut implémenter le MED (Modèle Externe de Données)
    Tout comme il y a le Modèle Organisationnel des Traitements (MOT), ne dit-on pas plutôt Modèle Organisationnel des Données (MOD) en méthode Merise ?

    Et pendant que j'y suis :
    Prise de tête avec les développeurs pour leur faire changer d’avis (^^)
    Ce n'est pas au développeur de l'application d'imposer la structure de la base de données !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Japon

    Informations forums :
    Inscription : Novembre 2007
    Messages : 125
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Ce n'est pas au développeur de l'application d'imposer la structure de la base de données !
    ^^, je sais mais je suis arrivé en cours de projets donc je doit défaire une partie qui est déjà faite.
    Maintenant autre question bête.

    Pour faire un select (ou crée là vue)
    je ferai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select nom, prénom 
    from t_nom n 
    join t_prenom p on n.id=p.id_n 
    order by [ordre]
    et les dévlopeurs s'amuse a gérer les prénoms

    ou je créerai une requete du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select nom, (sub select ) prenom_1 ,(sub select ) prenom_2 ,....
    from t_nom n
    Merci encore pour vos lumières.

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 016
    Points
    34 016
    Billets dans le blog
    14
    Par défaut
    Tu crées une vue avec la première requête. Enfin mieux adaptée à ton cas réel.

    La présentation des données avec un prénom par colonne ou à la suite séparés par des virgules est du ressort de l'application donc du développeur.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Japon

    Informations forums :
    Inscription : Novembre 2007
    Messages : 125
    Points : 92
    Points
    92
    Par défaut
    Mais dans le cas on la query retourne + de 10 collones
    on aurait quelque chose comme


    Dupont[]Marc[/][]Col1[/][]col2[/]...
    Dupont[]Mika[/][]Col1[/][]col2[/]...
    Dupont[]Luc[/][]Col1[/][]col2[/]...
    Dupont[]Pierre[/][]Col1[/][]col2[/]...



    Est ce vraiment plus performant ?, Désolé d'être aussi pointilleux
    Et encore un grand merci

  10. #10
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 016
    Points
    34 016
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par mikaeru Voir le message
    Mais dans le cas on la query retourne + de 10 collones
    Pas 10 colonnes mais 10 lignes si la personne a 10 prénoms et seulement 3 lignes si la personne n'a que 3 prénoms.

    Et pour un programmeur digne de ce nom, c'est un processus très classique de parcourir un jeu de résultat et de gérer la rupture sur le nom afin de rassembler tous les prénoms d'un nom.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Japon

    Informations forums :
    Inscription : Novembre 2007
    Messages : 125
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Pas 10 colonnes mais 10 lignes si la personne a 10 prénoms et seulement 3 lignes si la personne n'a que 3 prénoms.

    Et pour un programmeur digne de ce nom, c'est un processus très classique de parcourir un jeu de résultat et de gérer la rupture sur le nom afin de rassembler tous les prénoms d'un nom.
    Bonjour en ce jour nouveau

    Dans mon cas ici, la table a actuellement 28 colonnes (je reviendrais sur ce problème dans un autre post ^^).

    Donc en cas de multiple prénom ce qui m'inquiète ce ne sont pas les qualités du programmeur, car comme tu le souligne cela devrait être facile à gérer pour lui, mais plutôt les ressources utilisé.

    Disons que chaque ligne fera +- 500 octets, dans le cas 4 prénoms (c’est mon cas ), est ce qu’il fera un read de 2000 octets ? Mais il y a aura bien un envoi de 2000 octets via le réseau.

    Ce processe sera souvent utilisé donc potentiellement gourmant en ressource.

    Encore Merci

  12. #12
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 016
    Points
    34 016
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par mikaeru Voir le message
    Dans mon cas ici, la table a actuellement 28 colonnes
    Mais est-il nécessaire de ramener les 28 colonnes à chaque fois qu'on a besoin de tous les prénoms du client ?
    Dans les requêtes, il faut éviter la guerre des étoiles !

    (je reviendrais sur ce problème dans un autre post ^^).
    Effectivement, 28 colonnes, ça commence à faire un peu beaucoup ; n'y aurait-il pas d'autres optimisations du modèle de données à faire ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Japon

    Informations forums :
    Inscription : Novembre 2007
    Messages : 125
    Points : 92
    Points
    92
    Par défaut
    Bonjour,
    Merci pour l'intérêt que tu portes à mon post ^^.

    Cela sera très loin d'un select *, mais l'interface aura besoin de au moins 15 de ces champs, cela restera de la déduplication de donné pour les 14 autres colonnes.

    Ma question est :
    Est-ce que cela est il préférable à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT nom, (sub SELECT ) prenom_1 ,(sub SELECT ) prenom_2 ,....
    FROM t_nom n
    Pour les 28 colonnes, je vais créer mon post tout de suite ^^.

    Merci

  14. #14
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 016
    Points
    34 016
    Billets dans le blog
    14
    Par défaut
    La jointure et le traitement d'affichage des données par le programme sera probablement plus rapide que les requêtes SELECT ; ça fait toujours pusieurs requêtes à exécuter par le SGBD plutôt qu'une seule !

    Quel volume de données (combien de lignes de résultat de la requête) sera à traiter par le programme ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  15. #15
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Japon

    Informations forums :
    Inscription : Novembre 2007
    Messages : 125
    Points : 92
    Points
    92
    Par défaut
    +- 300 000 rows (+-300 octects chaque ligne)

  16. #16
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 792
    Points : 34 016
    Points
    34 016
    Billets dans le blog
    14
    Par défaut
    Pour quel besoin le programme devrait-il traiter autant de noms en même temps ?
    J'imagine qu'il ne s'agit pas d'afficher d'un coup les 300 000 lignes ?

    300 000 lignes c'est tout petit pour un SGBD mais ça commence à être sensible pour un programme. Tout dépend du traitement qui est fait par ce programme sur le jeu de données.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  17. #17
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 716
    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 716
    Points : 52 380
    Points
    52 380
    Billets dans le blog
    4
    Par défaut
    Dans le cadre de la solution que je vous ais déjà donné :
    http://blog.developpez.com/exercices...-de-personnes/
    Nous avons implémenté une vue avec les données de la personne et deux colonnes calculées par une même UDF :
    PRENOM_USUEL
    AUTRES_PRENOM
    La première contient le prénom usuel et s'il est composé le recompose.
    La seconde contient la liste de toutes les autres prénoms, séparé par des virgules et pour les prénoms composés, par un tiret.
    Voici le code de l'UDF (SQL Server) qui fait cela :
    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
    --==========================================================================--
    -- Fonction scalaires de mise à plat de tous les prénoms d'une personne 
    --==========================================================================--             
    CREATE FUNCTION S_PRS.F_LISTE_PRENOMS (@PRS_ID INT, 
                                           @USUEL  BIT)
    RETURNS VARCHAR(max)
    AS
    /****************************************************************************** 
    * Fonction scalaire récupérant tous les prénoms d'une personne                *
    ******************************************************************************* 
    * Fred. Brouard - http://sqlpro.developpez.com - www.sqlspot.com - 2009-04-20 * 
    *******************************************************************************
    * @PRS_ID id de la personne physique                                          *
    * @USUEL : Si 1 prénom usuels selement                                        *
    *          Si 0 autres prénoms                                                *
    *          Si NULL tous les prénoms, l'usuel en premier                       *
    ******************************************************************************/ 
    BEGIN
       DECLARE @PRENOMS VARCHAR(max);
       SET @PRENOMS = '';
    -- concaténation des prénoms   
       SELECT /* 37E203D2-440F-4567-A81E-A17BF9BBE24E */
              @PRENOMS = @PRENOMS + PRN_LIBELLE 
              + CASE PPN_COMPOSE WHEN 1 THEN '-' ELSE ', ' END
       FROM   S_PRS.T_J_PRS_PRENOMMEE_PRN_PPN AS PPN
              INNER JOIN S_REF.T_R_PRENOM_PRN AS PRN
                    ON PPN.PRN_ID = PRN.PRN_ID
       WHERE  PPN_USUEL = COALESCE(@USUEL, PPN_USUEL)
         AND  PPN.PRS_ID = @PRS_ID
       ORDER  BY PPN_USUEL DESC, PPN_ORDRE;
    -- si plus de 128 caractères
       IF LEN(@PRENOMS) > 128
       BEGIN
          SET @PRENOMS = SUBSTRING(@PRENOMS, 1, 128);
          SET @PRENOMS = SUBSTRING(@PRENOMS, 1, LEN(@PRENOMS) - CHARINDEX(REVERSE(@PRENOMS), ' '));
       END
    -- suppression du caractère virgule finale
       SET @PRENOMS = CASE 
                         WHEN @PRENOMS = '' THEN NULL 
                         ELSE SUBSTRING(@PRENOMS, 1, LEN(@PRENOMS) - 1) 
                      END;
       RETURN @PRENOMS;
    END
    GO
    Bien entendu, nous avons les fonctions inverses pour les masques de saisie. Elle sont inspirée par ll'UDF suivante :
    http://blog.developpez.com/sqlpro/p7...sure-multiple/

    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/ * * * * *

  18. #18
    Membre régulier
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Japon

    Informations forums :
    Inscription : Novembre 2007
    Messages : 125
    Points : 92
    Points
    92
    Par défaut
    Bonjour,
    Merci pour vos réponses.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/03/2014, 09h33
  2. Réponses: 24
    Dernier message: 18/10/2013, 17h49
  3. comment gerer plusieurs connexions client/serveur
    Par naili dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/08/2002, 17h58
  4. Génerer automatiquement plusieurs fichier .doc
    Par brunovitch dans le forum QuickReport
    Réponses: 3
    Dernier message: 09/07/2002, 09h19
  5. Shortcut avec plusieurs touches
    Par scorpiwolf dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/07/2002, 16h57

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