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 :

colonne calculer sur sql server


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Par défaut colonne calculer sur sql server
    bonjour,
    je suis entrain de créer mes tables sur sql server 2005 , est ce que c'est possible d'avoir ds une table une colonne calculer a partire d'autre colonne de la même table ( + / * - )

    mecri

  2. #2
    Membre Expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Par défaut
    Je ne sais pas si cela est possible ou non lors de la definition de la table.

    Par contre ca doit etre facilement faisable avec un update.

    Tu peux aussi penser à un trigger on insert, et update, qui te met ta colonne à jour pour en live.

    Cependant, je ne te conseillerai aucune de ces solutions car ca ne ferait qu'allourdir et ralentir ta db.
    Pourquoi ne pas calculer cette valeur au moment de ta requete ?

  3. #3
    Membre confirmé Avatar de zakaroh
    Inscrit en
    Avril 2008
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 129
    Par défaut
    j ai le mm problemke toi pauvrmen " j aime bien ton pseudi"

    en fait ds plusieu ds une table je dois avoir la somme de deux colone de la même table,,, merci de me dire la solution car ca va me rendre dinge cette table..

    merci

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Il serait fort aimable à certains d'écrire en français.

    Deux cas pour nos colonnes "calculées" :
    - La colonne "calculée" est dans une autre table que la table qui sert à calculer : dans ce cas, lors de la mise à jour de la table par la procédure stockée, il suffit de rajouter du code pour faire le calcul de la valeur et réaliser l'UPDATE dans la seconde table. Cela n'alourdit en aucun cas le traitement, il faut simplement écrire proprement sa requête de mise à jour et vérifier que les bons indexes sont présents.

    - La colonne vraiment calculée : c'est une colonne qui fait partie de la table et dont la valeur est calculée avec d'autres colonnes de la table. Dans ce cas, c'est lors de la creation de la table que l'on définit la formule de calcul :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE maTable
    (
    	MaColonneA INT NOT NULL,
    	MaColonneB INT NOT NULL,
    	MaColonneCalculee INT AS (MAColonneA + MaColonneB) PERSISTED
    );
    GO
    L'option PERSISTED permet de stocker physiquement les valeurs calculées dans la table et mettra à jour les valeurs lorsque n'importe quelle colonne dont dépend la colonne calculée est mise à jour.

    A+

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Par défaut
    bonjour,
    merci pour vos reponses
    voila l ecris ce code

    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
    22
    USE [sami]
    GO
    /****** Object:  Table [dbo].[Table_1]    Script Date: 05/02/2008 11:02:07 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[Table_1](
    	[P1] [nchar](10) NOT NULL,
    	[A] [int] NULL,
    	[B] [int] NULL,
    	[C] [int] AS ([B]+[A]) PERSISTED,
     
    )
    GO
     
     
     CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED 
    (
    	[P1] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]&
    ) ON [PRIMARY]

    ou il ya l erreur merci

  6. #6
    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
    Vous pouvez faire des colonnes calculées dans SQL Server 2005 :
    • à la volée
    • pertistante
    • indexées


    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE T 
    (COL1 INT,
     COL2 INT,
     COLCALC AS COL1 + COL2,
     COLCALC_PERSISTANTE AS COL1 - COL2 PERSISTED,
     COLCALC_PERSISTANTE_INDEXEE  AS COL1 * COL2);
    GO
     
    CREATE INDEX X ON T (COLCALC_PERSISTANTE_INDEXEE);
    GO
    A +
    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/ * * * * *

Discussions similaires

  1. Somme de colonne comme sur Sql Server
    Par Soulama dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 16/06/2010, 13h51
  2. Réponses: 2
    Dernier message: 08/11/2007, 10h54
  3. Réponses: 2
    Dernier message: 08/11/2007, 10h54
  4. Réponses: 1
    Dernier message: 04/04/2007, 13h43
  5. problème de float sur SQL server 2000.
    Par fidji dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2003, 14h15

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