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 :

enregistrer l'ordre alphabetique d'un champs dans une colonne d'autre table <comment?>


Sujet :

MS SQL Server

  1. #1
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut enregistrer l'ordre alphabetique d'un champs dans une colonne d'autre table <comment?>
    svp, pourriez vous m'aider?

    je fais une application qui doit définir un matricule pour chaque étudiant,
    cette matricule se compose d'un champ numérique d'une table T1 suivi de l'ordre alphabétique de nom (sous forme d'un n°).
    je sais que select avec order by permet le tri, mais comment stocker ce n° d'ordre dans une colonne?



    merci

  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 858
    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 858
    Points : 52 996
    Points
    52 996
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par spring.time Voir le message
    .... suivi de l'ordre alphabétique de nom (sous forme d'un n°).....i
    Notion trop vague... Avez vous un exemple ?

    A +

  3. #3
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut
    j'explique,

    j'ai une table <etudiant>(id_etudiant, nom,....) , une table<promotion>(id_promotion, n°promotion) et une table <promotion_etudiant>(#id_etudiant, #id_promotion)

    j'aimerais pour chaque étudiant:
    -prendre son n°promotion
    -calculer l'ordre alphabétique de son nom,
    -et mettre dans un champ d'autre table <matricule_etudiant>, la concaténation de n°promotion avec n°d'ordre.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 858
    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 858
    Points : 52 996
    Points
    52 996
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par spring.time Voir le message
    ...
    -calculer l'ordre alphabétique de son nom,....
    Mais cela ne signifie rien !!!!!

    C'est quoi un "calcul d'ordre alphabétique" ????

    A +

  5. #5
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut
    cette technique est utilisée par une école supérieure qui leur permet d'identifier les étudiants.
    on me la demandé de la prendre en considération dans mon développement de l'application.

  6. #6
    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 : 43
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Certes, mais cela ne nous dit pas comment celui-ci est calculé.
    Que se passe-t-il si un nom doit s'intercaler entre deux noms déjà existants qui ont tous deux un indice d'ordre alphabétique consécutif ?

    D'autre part je ne vois pas l'intérêt d'une telle implémentation.
    Il suffirait d'avoir une table de clé, d'une seule ligne et d'une seule colonne que l'on incrémente à chaque appel d'une procédure stockée : c'est le nouveau matricule. Dès lors le problème que j'expose dans la question est éliminé

    @++

  7. #7
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut
    je vais ordonner les enregistrements de la table etudiant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from etudiant order by nom,
    j'obtient une liste triée par le nom, mais comment numéroter les lignes selon cet affichage?

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 858
    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 858
    Points : 52 996
    Points
    52 996
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT *, ROW_NUMBER() OVER(ORDER BY nom) AS NUM
    FROM   etudiant
    A +

  9. #9
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut
    oh merci

    est ce qu'il y'a une possibilité pour extraire ce rownum?

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 858
    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 858
    Points : 52 996
    Points
    52 996
    Billets dans le blog
    6
    Par défaut
    SELECT est l'ordre SQL d'extraction des données...

    A +

  11. #11
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut
    oui, vous avez raison ,

    j'aimerais stocker ce numero dans un champ, est il possible?

  12. #12
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 118
    Points : 180
    Points
    180
    Par défaut
    ROW_NUMBER() est une fonction de partitionnement qui ne renverra pas le même résultat pour les mêmes valeurs si le jeu de données évolue.

    Par exemple si vous avez 3 noms :
    1 qui commence par A
    1 qui commence par F
    1 qui commence par L

    La fonction ROW_NUMBER() OVER(ORDER BY Nom) renvera :
    A 1
    F 2
    L 3

    Si vous ajoutez un nom dans la table qui commence par C et que vous appliquez à nouveau la fonction ROW_NUMBER() sur le nom, vous aurez :
    A 1
    C 2
    F 3
    L 4

    Si votre liste de noms n'évolue pas, et que vous souhaitez stocker cette information, il faut ajouter une colonne dans votre table et faire un UPDATE dessus en utilisant la fonction ROW_NUMBER()
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE Table_1 SET RowNum = T1.Num
    FROM (
    	SELECT Id, ROW_NUMBER() OVER(ORDER BY Nom) as Num
    	FROM Table_1) T1
    WHERE Table_1.Id = T1.Id
    Sauf contraintes liés à des temps de réponse dûs à des données importantes et des requêtes complexes et dans un environnement de type reporting, je ne vois pas trop la nécessité de le faire.

  13. #13
    Membre régulier Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Points : 84
    Points
    84
    Par défaut
    merci Beaucoup,

    la liste des étudiants évolue chaque année, j'aimerais pour chaque niveau(classe), avoir l'ordre des noms de famille, afin de créer pour chaque étudiant son matricule qui est composée de ce n° et de n° de sa promotion.

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

Discussions similaires

  1. Modification d'un champ dans une colonne
    Par manusharepoint dans le forum SharePoint
    Réponses: 1
    Dernier message: 06/06/2008, 14h44
  2. Réponses: 2
    Dernier message: 30/11/2007, 17h54
  3. SQL Loader : deux champs dans une colonne
    Par Kiroukool dans le forum SQL*Loader
    Réponses: 4
    Dernier message: 05/10/2007, 10h21
  4. Définir le futur type de champ dans une requête création de table
    Par Fredo67 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/02/2007, 18h19
  5. Requête SELECT avec deux champs dans une colonne ??
    Par fredhali2000 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 08/06/2006, 10h41

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