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

SQLite Discussion :

UPDATE d'enregistrement en fonction d'une valeur d'une autre table


Sujet :

SQLite

  1. #1
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut UPDATE d'enregistrement en fonction d'une valeur d'une autre table
    Bonjour,

    Je m'explique.
    Je créé un petit programme de gestion de Donjons et Dragons (à titre personnel).
    Dans une table, j'ai les personnages. Dans cette table, j'ai les colonnes prs_ptsexp, prs_niveau et prs_classe qui correspondent aux points d'expérience, au niveau et à la classe du personnage.

    Dans le programme, lors de la fin d'un scénario, j'attribue des points d'expérience à chacun des personnages ayant participé à la partie concerné.

    Dans une autre table, j'ai la progression en niveau des personnages, en fonction du nombre de points d'expérience et de la classe.

    J'aimerais faire un update du niveau si le nombre de points d'expérience correspond au niveau suivant.

    Pour être précis, dans la table de progression, j'ai les colonnes cla_id, prg_niveaun prg_expmin et prg_expmax correspondant à la classe, le niveau, le nb de points d'expérience minimum pour le niveau et le nb de points d'expérience maximum pour le niveau.

    En gros, l'idée serait d'avoir un UPDATE T_Personnage_PRS SET prs_niveau=prs_niveau+1 WHERE prs_ptsexp>=???
    Et, c'est là que le bât blesse ! Je ne sais pas comment lui dire d'aller chercher la bonnevaleur de prg_expmax dans la table T_ProgClasse_PRG

    Est-ce que quelqu'un saurait faire ça ?

    Merci d'avance

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  2. #2
    Membre éprouvé
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 420
    Points : 1 102
    Points
    1 102
    Par défaut
    Bonjour,

    Selon moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE T_Personnage_PRS SET prs_niveau=prs_niveau+1 
                    WHERE prs_ptsexp>= (select prg_expmax from T_ProgClasse_PRG where <La bonne condition si nécessaire>)
                              and <C est le bon personnage>
    NB J'ai mis une condition pour le choix du prg_expmax parce que tu peux avoir différents cas (en particulier selon le niveau ou le type de personnage...
    et il faut éventuellement aussi une condition pour choisir le bon personnage si ce n'est pas le cas, tu peux utiliser l'identifiant de ton personnage dans <La bonne condition si nécessaire>

    Cordialement

  3. #3
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 384
    Points : 9 745
    Points
    9 745
    Par défaut
    Merci,

    Ça a l'air cool. Je n'étais pas sûr de pouvoir faire appel à un SELECT comme test dans la condition du WHERE.

    je n'ai pas besoin de tester l'id du personnage. Le principe est de mettre à jour tous les personnages dont les points d'expérience sont suffisant pour changer de niveau en fonction de leur classe, et de leur points d'expérience.

    Je pense que ça devrait me donner un truc comme ça.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UPDATE T_Personnage_PRS t0 SET t0.prs_niveau=t0.prs_niveau+1 
                    WHERE t0.prs_ptsexp> (SELECT t1.prg_expmax FROM T_ProgClasse_PRG t1 WHERE t1.cla_id=t0.cla_id AND t1.prg_niveau=t0.prs_niveau )
    Je vais tester ça.

    Merci beaucoup

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

Discussions similaires

  1. [AC-2003] Valeur d'un champ en fonction d'une autre table ou formulaire
    Par rorobase dans le forum Access
    Réponses: 1
    Dernier message: 28/07/2010, 10h45
  2. Select "table" en fonction d'une "autre table"
    Par Nicolas94 dans le forum Requêtes
    Réponses: 2
    Dernier message: 29/06/2010, 02h38
  3. [Oracle 10G] Filtrer une requête en fonction d'une autre table
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 4
    Dernier message: 27/04/2008, 04h49
  4. [SQL] select en fonction d'une autre table
    Par rduvrac dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/03/2008, 13h45
  5. UPDATE d'un champs à partir d'une autre table
    Par choupeo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/12/2007, 14h50

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