Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Création d'une table de Login avec création d'un mot de passe basé (en partie) sur le contenu d'une table

2 réponses
Avatar
Matthieu
Bonjour,

L'en-tête du message à rallonge risque d'effrayer, mais ça me semble +
clair.

Je dispose d'une table Annuaire avec les colonnes NOM, PRENOM, EMAIL

Je dispose d'une table PAYS avec les colonnes ID, PAYS.
Cette table me sert de base pour la création du mot de passe. J'ai choisi
pays mais ça aurait pu être n'importe quoi d'autre.

J'ai créé une table LOGIN qui contient les colonnes LOGIN, EMAIL, PASSWORD.
La colonne Login contiendra les prenom + nom concaténés de la table
ANNUAIRE,
La colonne Email récupérera la colonne EMAIL de la table ANNUAIRE,

J'aimerais que la colonne Password contienne un pays suivi d'un nombre
aléatoire (entre 0 et 200)

C'est ce qui me pose problème.

En oubliant momentanément la génération du mot de passe, j'obtiens la
requête suivante :
INSERT INTO WifiLogin
(Login, Email, Password)
(
SELECT { fn LCASE(Annuaire.Prenom) } + '.' + { fn LCASE(Annuaire.Nom) }
AS Login, Annuaire.Email,
'mot de passe' AS Password
FROM Annuaire )


En cherchant à générer le mot de passe, j'arrive à
SELECT Pays + CONVERT(varchar, round((rand() * 200), 0)) AS Password
FROM Pays
mais bien entendu, ça renvoit le nom du Pays concaténé avec le même chiffre
à chaque ligne

=>
Afghanistan85
AfriqueduSud85
Albanie85
Algerie85
etc...

alors que j'aimerais obtenir
Afghanistan85
AfriqueduSud0
Albanie123
Algerie12
etc...

Donc, j'ai déjà un problème sur la génération du mot de passe. Et ensuite,
il faudrait que j'arrive à réaliser une belle requête INSERT (avec la
génération du mot de passe).


Je ne sais pas si c'est suffisamment clair.

Quelqu'un a-t-il une idée ?

Par avance, merci de vos réponses,

Matthieu.

PS : Si vous avez en tête une solution équivalente qui existe et qui
fonctionne, je suis preneur :)

2 réponses

Avatar
BVesan
Bonjour,
Pour régler ce problème de génération de nombre aléatoire, une bonne
solution consiste à modifier pour chaque appel à RAND le "seed".
Dans votre cas, il suffirait d'utiliser une colonne de type integer pour
l'insertion.
Si la table Annuraire dispose d'une colonne unique id_annuaire, il suffit
donc de l'utiliser:
INSERT INTO WifiLogin (Login,Email,Password)
SELECT Prenom+Nom,Email,Pays +
CONVERT(varchar,round(rand(id_annuaire)*200),0))
FROM Annuaire
Avatar
Christophe
pour les aleatoire cette fonction est plutot pas mal aussi !!
je m'en sert parfois pour faire un random de tri aléatoire


select Newid()

"BVesan" wrote:

Bonjour,
Pour régler ce problème de génération de nombre aléatoire, une bonne
solution consiste à modifier pour chaque appel à RAND le "seed".
Dans votre cas, il suffirait d'utiliser une colonne de type integer pour
l'insertion.
Si la table Annuraire dispose d'une colonne unique id_annuaire, il suffit
donc de l'utiliser:
INSERT INTO WifiLogin (Login,Email,Password)
SELECT Prenom+Nom,Email,Pays +
CONVERT(varchar,round(rand(id_annuaire)*200),0))
FROM Annuaire