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

Langage SQL Discussion :

update plusieurs valeurs avec random


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 23
    Points : 26
    Points
    26
    Par défaut update plusieurs valeurs avec random
    Bonjour ,
    J'ai une table note avec une structure (nom,prénom,date_nai) avec 10 lignes
    maintenant je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Alter table note add algo_dev
    maintenant je voudrai faire un update avec valeurs aléatoires je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update note set algo_dev=(Select(convert(int,20*rand())))
    J'aurai le même résultat pour toutes les différentes lignes et c'est logique même , mais je voudrai avoir des valeurs différentes pour toutes les lignes pas toutes mais des valeurs différentes , comment faire ?
    Merci d'avance

  2. #2
    Membre éclairé Avatar de GeekMokona
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2011
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2011
    Messages : 327
    Points : 817
    Points
    817
    Par défaut
    Citation Envoyé par tafpro Voir le message
    J'aurai le même résultat pour toutes les différentes lignes et c'est logique même , mais je voudrai avoir des valeurs différentes pour toutes les lignes pas toutes mais des valeurs différentes , comment faire ?
    Merci d'avance
    C'est pas très clair ... un exemple de résultat attendu s'impose

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour

    tout dépend de ce que vous voulez obtenir comme résultat. décrivez un peu le contexte et à quoi doivent servir ses nombres aléatoires.

    Par exemple, si vous avez une colonne INT, vous pouvez la spécifier comme seed de la fonction RAND :

    sinon, vous utiliser comme base la fonction newID qui donnera bien une valeur différente pour chaque ligne, et la transformer en INT avec un CHECKSUM, avec un modulo pour limiter à la plage voulue (ici, 20)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ABS(CHECKSUM(NEWID()))%20

  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 898
    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 898
    Points : 53 136
    Points
    53 136
    Billets dans le blog
    6
    Par défaut
    C'est normal. RAND est appelé une seule fois pour optimisation et ce calcul est projeté sur toutes les lignes.
    Comme dit, mettez une graine ou utilisez une fonction aléatoire à chaque ligne comme NEWID() de MS SQL Server.

    A +

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 23
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour

    tout dépend de ce que vous voulez obtenir comme résultat. décrivez un peu le contexte et à quoi doivent servir ses nombres aléatoires.

    Par exemple, si vous avez une colonne INT, vous pouvez la spécifier comme seed de la fonction RAND :

    sinon, vous utiliser comme base la fonction newID qui donnera bien une valeur différente pour chaque ligne, et la transformer en INT avec un CHECKSUM, avec un modulo pour limiter à la plage voulue (ici, 20)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ABS(CHECKSUM(NEWID()))%20
    ça marche merci
    Nom : Captfure.PNG
Affichages : 1517
Taille : 23,1 Ko
    là j'ai des valeurs différentes avant j'avais que des 14 pour la colonne algo_dev
    Merciiii

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/09/2008, 18h06
  2. Réponses: 14
    Dernier message: 09/03/2007, 12h21
  3. Lecture de plusieurs valeurs avec readLine()
    Par zsoh dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 01/02/2007, 17h10
  4. update plusieurs valeurs à la fois
    Par lesarbres dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/11/2006, 08h05
  5. Réponses: 7
    Dernier message: 31/07/2006, 21h44

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