[SQL] - créer un matricule d'1 collaborateur

Le
Itsejoke
Bonjour à tous,

J'aurais de besoin de créer un matricule d'un collaborateur à partir de son
prénom / nom sous cette forme :

- (1) : Première lettre du prénom : par exemple : A
- (2) : Deux première lettres du nom : par exemple : TR
- (3) : Un entier sur 3 positions XXX en commençant par 001,
002..010,,999

Tout ça stocké dans une table avec les 3 champs : Prenom, Nom, Matricule


Pour générer le ATR (1) et (2) : j'ai utilisé substring
Mais je ne sais pas comment faire pour la partie "variable" XXX en fonction
de l'existant
=> Pour éviter les doublons : s'il existe déjà un matricule ATR001, cela
doit générer un matricule = ATR002, etc

Le matricule pourrait servir de clé primaire et l'on pourrait faire peut ête
un insert en vérifiant cette valeur?

Merci de votre aide.
Hervé
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Synopsis
Le #18482471
Bonjour,


Declare @Id Int
Declare @IdStr varchar(3)

-- Le dernier Id
SELECT @ID = Max( CAST( SUBSTRING(matricule, 4, 3) as Int) )
FROM collaborateur
-- Vous rajoutez la clause suivante si vous voulez que l'incrément dépende
des trois premières lettres comme votre exemple.
WHERE substring(matricule, 1, 3) = 'ATR'

-- L'Id au format "000"

Set @IdStr = Right('00' + convert(varchar(3), @Id + 1) , 3)

Cordialement,
"Itsejoke"
Bonjour à tous,

J'aurais de besoin de créer un matricule d'un collaborateur à partir de
son prénom / nom sous cette forme :

- (1) : Première lettre du prénom : par exemple : A
- (2) : Deux première lettres du nom : par exemple : TR
- (3) : Un entier sur 3 positions XXX en commençant par 001,
002.....010,...,999

Tout ça stocké dans une table avec les 3 champs : Prenom, Nom, Matricule


Pour générer le ATR (1) et (2) : j'ai utilisé substring...
Mais je ne sais pas comment faire pour la partie "variable" XXX en
fonction de l'existant...
=> Pour éviter les doublons : s'il existe déjà un matricule ATR001, cela
doit générer un matricule = ATR002, etc...

Le matricule pourrait servir de clé primaire et l'on pourrait faire peut
ête un insert en vérifiant cette valeur...?

Merci de votre aide.
Hervé





Fred BROUARD
Le #18483521
Quelque chose comme :

SELECT SUBSTRING(PRENOM, 1, 1) + SUBSTRING(NOM, 1, 2)
+ REPLACE(LEFT(CAST(ROW_NUMBER() OVER(ORDER BY SUBSTRING(PRENOM,
1, 1) + SUBSTRING(NOM, 1, 2)) AS VARCHAR(3), 3), ' ', '0')

A +

Itsejoke a écrit :
Bonjour à tous,

J'aurais de besoin de créer un matricule d'un collaborateur à partir de son
prénom / nom sous cette forme :

- (1) : Première lettre du prénom : par exemple : A
- (2) : Deux première lettres du nom : par exemple : TR
- (3) : Un entier sur 3 positions XXX en commençant par 001,
002.....010,...,999

Tout ça stocké dans une table avec les 3 champs : Prenom, Nom, Matricule


Pour générer le ATR (1) et (2) : j'ai utilisé substring...
Mais je ne sais pas comment faire pour la partie "variable" XXX en fonction
de l'existant...
=> Pour éviter les doublons : s'il existe déjà un matricule ATR001, cela
doit générer un matricule = ATR002, etc...

Le matricule pourrait servir de clé primaire et l'on pourrait faire peut ête
un insert en vérifiant cette valeur...?

Merci de votre aide.
Hervé






--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************
Itsejoke
Le #18492881
Bonsoir Synopsis,

Merci pour votre réponse rapide, je vais tester le MAX...
Hervé


"Synopsis" 497cbf79$0$14129$
Bonjour,


Declare @Id Int
Declare @IdStr varchar(3)

-- Le dernier Id
SELECT @ID = Max( CAST( SUBSTRING(matricule, 4, 3) as Int) )
FROM collaborateur
-- Vous rajoutez la clause suivante si vous voulez que l'incrément dépende
des trois premières lettres comme votre exemple.
WHERE substring(matricule, 1, 3) = 'ATR'

-- L'Id au format "000"

Set @IdStr = Right('00' + convert(varchar(3), @Id + 1) , 3)

Cordialement,
"Itsejoke"
Bonjour à tous,

J'aurais de besoin de créer un matricule d'un collaborateur à partir de
son prénom / nom sous cette forme :

- (1) : Première lettre du prénom : par exemple : A
- (2) : Deux première lettres du nom : par exemple : TR
- (3) : Un entier sur 3 positions XXX en commençant par 001,
002.....010,...,999

Tout ça stocké dans une table avec les 3 champs : Prenom, Nom, Matricule


Pour générer le ATR (1) et (2) : j'ai utilisé substring...
Mais je ne sais pas comment faire pour la partie "variable" XXX en
fonction de l'existant...
=> Pour éviter les doublons : s'il existe déjà un matricule ATR001, cela
doit générer un matricule = ATR002, etc...

Le matricule pourrait servir de clé primaire et l'on pourrait faire peut
ête un insert en vérifiant cette valeur...?

Merci de votre aide.
Hervé









Itsejoke
Le #18492991
Bonsoir Frédéric,
Merci pour votre réponse...
Hervé



"Fred BROUARD" %
Quelque chose comme :

SELECT SUBSTRING(PRENOM, 1, 1) + SUBSTRING(NOM, 1, 2)
+ REPLACE(LEFT(CAST(ROW_NUMBER() OVER(ORDER BY SUBSTRING(PRENOM, 1,
1) + SUBSTRING(NOM, 1, 2)) AS VARCHAR(3), 3), ' ', '0')

A +

Itsejoke a écrit :
Bonjour à tous,

J'aurais de besoin de créer un matricule d'un collaborateur à partir de
son prénom / nom sous cette forme :

- (1) : Première lettre du prénom : par exemple : A
- (2) : Deux première lettres du nom : par exemple : TR
- (3) : Un entier sur 3 positions XXX en commençant par 001,
002.....010,...,999

Tout ça stocké dans une table avec les 3 champs : Prenom, Nom, Matricule


Pour générer le ATR (1) et (2) : j'ai utilisé substring...
Mais je ne sais pas comment faire pour la partie "variable" XXX en
fonction de l'existant...
=> Pour éviter les doublons : s'il existe déjà un matricule ATR001, cela
doit générer un matricule = ATR002, etc...

Le matricule pourrait servir de clé primaire et l'on pourrait faire peut
ête un insert en vérifiant cette valeur...?

Merci de votre aide.
Hervé






--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************


Patrice
Le #18514611
Sans lien mais ce principe peut générer des matricules plus ou moins douteux
(style CON01 par exemple)... A considérer peut-être si pas déjà fait...

--
Patrice

"Itsejoke" discussion : ehc3Ml$
Bonsoir Frédéric,
Merci pour votre réponse...
Hervé



"Fred BROUARD" news: %
Quelque chose comme :

SELECT SUBSTRING(PRENOM, 1, 1) + SUBSTRING(NOM, 1, 2)
+ REPLACE(LEFT(CAST(ROW_NUMBER() OVER(ORDER BY SUBSTRING(PRENOM, 1,
1) + SUBSTRING(NOM, 1, 2)) AS VARCHAR(3), 3), ' ', '0')

A +

Itsejoke a écrit :
Bonjour à tous,

J'aurais de besoin de créer un matricule d'un collaborateur à partir de
son prénom / nom sous cette forme :

- (1) : Première lettre du prénom : par exemple : A
- (2) : Deux première lettres du nom : par exemple : TR
- (3) : Un entier sur 3 positions XXX en commençant par 001,
002.....010,...,999

Tout ça stocké dans une table avec les 3 champs : Prenom, Nom, Matricule


Pour générer le ATR (1) et (2) : j'ai utilisé substring...
Mais je ne sais pas comment faire pour la partie "variable" XXX en
fonction de l'existant...
=> Pour éviter les doublons : s'il existe déjà un matricule ATR001, cela
doit générer un matricule = ATR002, etc...

Le matricule pourrait servir de clé primaire et l'on pourrait faire peut
ête un insert en vérifiant cette valeur...?

Merci de votre aide.
Hervé






--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************






Itsejoke
Le #18518161
Bonsoir Patrice, merci pour ta considération...

Hervé.

"Patrice"
Sans lien mais ce principe peut générer des matricules plus ou moins
douteux (style CON01 par exemple)... A considérer peut-être si pas déjà
fait...

--
Patrice

"Itsejoke" discussion : ehc3Ml$
Bonsoir Frédéric,
Merci pour votre réponse...
Hervé



"Fred BROUARD" news: %
Quelque chose comme :

SELECT SUBSTRING(PRENOM, 1, 1) + SUBSTRING(NOM, 1, 2)
+ REPLACE(LEFT(CAST(ROW_NUMBER() OVER(ORDER BY SUBSTRING(PRENOM,
1, 1) + SUBSTRING(NOM, 1, 2)) AS VARCHAR(3), 3), ' ', '0')

A +

Itsejoke a écrit :
Bonjour à tous,

J'aurais de besoin de créer un matricule d'un collaborateur à partir de
son prénom / nom sous cette forme :

- (1) : Première lettre du prénom : par exemple : A
- (2) : Deux première lettres du nom : par exemple : TR
- (3) : Un entier sur 3 positions XXX en commençant par 001,
002.....010,...,999

Tout ça stocké dans une table avec les 3 champs : Prenom, Nom,
Matricule


Pour générer le ATR (1) et (2) : j'ai utilisé substring...
Mais je ne sais pas comment faire pour la partie "variable" XXX en
fonction de l'existant...
=> Pour éviter les doublons : s'il existe déjà un matricule ATR001,
cela doit générer un matricule = ATR002, etc...

Le matricule pourrait servir de clé primaire et l'on pourrait faire
peut ête un insert en vérifiant cette valeur...?

Merci de votre aide.
Hervé






--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************









Publicité
Poster une réponse
Anonyme