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 :

Formule colonne calculée


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut Formule colonne calculée
    Salut,
    Voilà, j'ai une base de données sur SQL Server 2005 et j'ai une table (Projet) qui possède des champs calculés (ex : somme de montants d'une autre table). Avec l'aide je sais où taper ma formule (propriété Spécification de la colonne calculée). Cependant comme je n'ai jamais fait de formules, je ne sais pas quelle forme doit avoir la formule (comment dire que la colonne est une somme d'autres colonnes d'une table...).
    Si vous pouviez m'aider. Merci.

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    La formule d'une colonne calculée ne peut pas référencer les colonnes d'une autre table. Tu pourrais sans doute contourner cela en créant une fonction qui va chercher les données où tu veux, mais je te le déconseille fortement car tu t'exposes à des problèmes de performances.

    La meilleure solution est de créer une vue.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    Désolé d'avoir fait un autre post, mais je voulais être plus général dans ma question.
    Pour la référence à d'autres tables dans une formule, ok c'est impossible merci.
    Tu me propose d'utiliser des vues. J'ai cependant un problème :
    Par exemple :
    J'ai 2 tables : Projet(nomP, montantTTCP) et Devis(nomD, dateD, montantTTCD). 1 devis a 1 projet, 1 projet peut avoir N devis.
    Je souhaite que montantTTCP soit la somme des montantTTCD associés.
    Si je fais une vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE VIEW montantTTCP
    AS SELECT sum(d.montantTTCD) as total 
    FROM devis d, projet p
    WHERE d.nomP=p.nomP
    Le problème, c'est qu'il me faudrait un : AND p.nomP=...
    Mais je ne connais pas le nomP.

    Si vous pouvez m'aider. Et si tu peux me dire comment faire avec des fonctions, même si c'est lourd, je pense que ça correspond plus à ce que je veux.

  4. #4
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Salut,

    Ma suggestion de la vue, est pour remplacer la table + la colonne calculée.
    La vue donnant qqch comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE VIEW dbo.vProjet
    AS SELECT p.nomP /* ... */ ,sum(d.montantTTCD) as montantTTCDtotal
    FROM dbo.devis d
    JOIN dbo.projet p ON d.nomP=p.nomP
    Ensuite, tu peux faire des requêtes SELECT sur cette vue au lieu de le faire sur la table. Cela permettra à l'optimiseur de SQL Server de bien se débrouiller.
    A moins que tu souhaites stocker en dur la somme dans une colonne de Projet, ce que je déconseile à moins que tu aies de vrais problèmes de performances. Dans ce cas, tu peux le faire à l'aide d'un trigger sur Devis

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Par défaut
    Quand tu parlais d'utiliser des fonctions, est-ce que c'est la même chose que lorsque tu parles des triggers ?

  6. #6
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Ce sont deux choses différentes.
    Que souhaites-tu faire précisément ?
    1) afficher un total dans une requête de type SELECT
    2) stocker le total dans une colonne d'une table, pour améliorer tes performances ?

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

Discussions similaires

  1. table avec des colonnes calculées (table qui stocke des formules)
    Par messi1987 dans le forum Développement
    Réponses: 15
    Dernier message: 13/01/2014, 17h16
  2. Réponses: 11
    Dernier message: 13/04/2013, 15h25
  3. [SP-2007] Formule Colonne valeur calculée : test date non renseignée
    Par SONY30 dans le forum SharePoint
    Réponses: 3
    Dernier message: 30/08/2010, 11h41
  4. Mauvais résultat aprés une formule de calcul complexe
    Par poufouille dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/12/2004, 00h12
  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