[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é
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