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

MS SQL Server Discussion :

UPDATE colonnes calculée en cascade


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Par défaut UPDATE colonnes calculée en cascade
    Bonjour

    Je suis sous SQLServer 2005 mais la question peut trouver réponse dans
    ce forum
    comment puis je faire une requête de ce type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UPDATE T_TABLE
        SET 
            VAL2 = VAL1 * @Unevariable,
            VAL3 = VAL2 * @UneAutreVariable
            VAL4 = VAL3 * etc ..
    C'est une version simplifiée de mon problème, bien sur
    je peux répéter la chaine de calcul pour chaque set
    mais cela me semble incroyable
    Sinon peut être avec une clause OUTPUT mais cela me parait
    encore incroyable pour un truc aussi simple

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Par défaut
    ma question est mal posée il s"agit en fait
    de savoir si on peut poser des calculs intermédiaires
    dans une requête qu"elle soit un simple select ou un update
    par exemple ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT 
      ch1 * ch2 as ch3
      ch3 * ch4 as ch5
      etc..

  3. #3
    jnore
    Invité(e)
    Par défaut
    Il y a certainement moyen via des procédures stockées. Mais je ne connais pas assez Sql Server.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    ch3 est-elle une colonne calculée ou une colonne de la table ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    J1
    J1 est déconnecté
    Membre expérimenté Avatar de J1
    Inscrit en
    Mai 2004
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 321
    Par défaut
    Citation Envoyé par PickEpique
    ma question est mal posée il s"agit en fait
    de savoir si on peut poser des calculs intermédiaires
    dans une requête qu"elle soit un simple select ou un update
    par exemple ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT 
      ch1 * ch2 as ch3
      ch3 * ch4 as ch5
      etc..
    Je ne pratique pas SQL Server 2005. Sous Access en tout cas, on peut.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT 1 + 2 AS lngSomme, lngSomme * 2 AS lngSommeDoublee
    ... renvoie bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    lngSomme | lngSommeDoublee
    --------------------------
           3 |              6
    EDIT :
    Je viens de conduire des tests complémentaires. Conclusion, sous SQL Server 2000, cette même requête génère l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    'lngSomme' : nom de colonne incorrect.
    Maintenant, comme je le disais plus haut, je n'ai pas la possibilité de tester sous SQL Server 2005.

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Par défaut
    Oui effectivement sous SQL server cela renvoie une erreur, comme j'ai l'habitude de Access, ou Paradox ou cela passe. ca me semble bizarre qu'il n'y ai pas un équivalent au moins avec SQL server

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 998
    Billets dans le blog
    6
    Par défaut
    En utilisant le concept de CTE... Voir mon bouquin aux pages 186 à 191.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    WITH
    Q1 AS
    (SELECT VAL1 * @Unevariable AS VAL2
     FROM   MaTable),
    Q2 AS
    (SELECT VAL2, VAL2 * @UneAutreVariable AS VAL3
     FROM   Q1),
    Q3 AS
    (SELECT VAL2, VAL3, VAL3 * @UneTroisièmeVariable AS VAL4
     FROM   Q2)
    ...
    UPDATE MaTable
    SET    VAL2 = Qn.VAL2, 
           VAL3 = Qn.VAL2,
           VAL4 = Qn.VAL2,
           ... 
           VALn = Qn.VALn,
     
    FROM   Qn
           INNER JOIN MaTable T
                 ON Qn.??? = T.???
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 127
    Par défaut
    Effectivement cela marche je n'avais pas pensé à cette utilisation des CTE.
    Tu parle de ton livre dans la collection Synthex? celui la je l'ai et j'ai lu cette partie surement trop vite.

    Merci

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

Discussions similaires

  1. Update avec des colonnes calculées
    Par beurknbba dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/08/2009, 13h44
  2. Formule colonne calculée
    Par davasm dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 18/07/2006, 16h33
  3. colonne calculée dans une vue
    Par jfc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/04/2006, 16h11
  4. update pour calcul pourcentage (SQL SERVER 2000)
    Par meufeu dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/09/2005, 09h04
  5. [CR] Colonnes calculées
    Par plong dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 23/11/2003, 12h12

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