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

Développement SQL Server Discussion :

Calculer la différence des valeurs de deux colonnes d'une même table


Sujet :

Développement SQL Server

  1. #1
    Candidat au Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Février 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : informatique de gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2018
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Calculer la différence des valeurs de deux colonnes d'une même table
    Je suis nouveau ou débutant en SQL server, certes.
    Mais je voudrais une requête qui calcule "Ecart"des valeurs entre deux colonnes "Quantite_attendue" et "Quantité_livree" d'une même table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE Livraison
    (
     ID int constraint PKF
     Primary Key Identity (1,1),
     Quantite_attendue Int,
     Quantite_livree Int,
     Ecart             Int,
     Destination    Int,
     )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      CREATE TABLE Categorie(
            IDCat   Int Identity (1,1),
            Libelle Varchar (30)
    	,CONSTRAINT Categorie_PK PRIMARY KEY (IDCat)
    Je tiens sur vous?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 730
    Points : 1 416
    Points
    1 416
    Par défaut
    Plusieurs choses :

    Requête qui affiche/calcule l'écart :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT
     Quantite_attendue,
     Quantite_livree,
     Isnull(Quantite_attendue,0) - Isnull(Quantite_livree) as Ecart_calcule
    FROM
     Livraison
    Remarques sur la structure de la table :

    1- Le fait de stoker l'écart dans la table n'est pas une bonne idée.
    Ça s'appelle de la dé normalisation.
    Les gourous ne sont pas d'accord entre eux pour ce genre de pratique en général.
    Enlève la de ta définition de table.

    S'il te semble que t'en as vraiment besoin alors crée une vue et utilise la.

    2- le fait de nommer la contrainte de PRIMARY KEY doit aussi t'aider à l'avenir.
    Le nom PKF correspond à quoi pour toi ?
    Le savoir est une nourriture qui exige des efforts.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Michel.Priori Voir le message
    Le nom PKF correspond à quoi pour toi ?
    PFK = Poulet Frit Kentucky ! (=KFC en anglais... Pour que les Français comprennent... )

    Pas besoin d'être un grand gourou pour être contre cette pratique : il suffit de modifier une valeur et de ne pas recalculer la différence et ça ne balance plus dans la comptabilité mensuelle !
    Après, avec une couche de trigger, y a moyen de gérer ça, mais pas super palpitant à faire

    ET IL Y A.....
    la colonne calculée qui permet d'avoir la colonne qui se calcule automatiquement lors des changements de données et qui peut être persistante.
    https://docs.microsoft.com/fr-fr/sql...ql-server-2017

  4. #4
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 730
    Points : 1 416
    Points
    1 416
    Par défaut
    Citation Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
    ET IL Y A.....
    la colonne calculée qui permet d'avoir la colonne qui se calcule automatiquement lors des changements de données et qui peut être persistante.
    T'es sérieux là ?
    Tu conseilles à une personne qui s'annonce comme débutante, qui ne sait pas faire un calcul en ligne, de mettre en place au niveau structurel une information calculée dont on ne sait rien de l'importance de sa récurrence sur l'ensemble des requêtes.
    Ça laisse à penser qu'il vaut mieux créer tous les calculs dans toutes les tables...
    Selon ton conseil, pourquoi s'en priver ?

    De plus, le fait de rendre persistant le résultat EST de la dé-normalisation.
    La frontière est trop mince pour un débutant (même si la syntaxe est dissuasive).
    Donc, tu indiques allègrement à un débutant comment faire une pratique que tu réprouve
    Le savoir est une nourriture qui exige des efforts.

  5. #5
    Candidat au Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Février 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : informatique de gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2018
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Calculer la différence des valeurs de deux colonnes d'une même table
    Merci infiniment à vous tous qui étiez préoccupés comme moi à ce problème. Il m'a été conseillé d'enlever cette colonne Écart. Comme vous l'indiquez, il m'a été reproché de ne pas utiliser de champs calculable au niveau de la base de données, mais au niveau graphique à travers le langage de programmation.
    Une fois de plus merci pour tout.

  6. #6
    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,

    je pense que 7gyY9w1ZY6ySRgPeaefZ proposait la colonne calculée en alternative de la vue. et en effet, elle peut présenter certains avantages, surtout si cette colonne doit être indexée.

    Concernant le fait de la rendre persistante, il n'évoque que la possibilité, pas la nécessité. Dans le cas présent, avec les infos qu'on a, ça me semble bien inutile de la rendre persistante
    Et on peut en effet considérer que rendre une colonne calculé persistante est une forme de dénormalisation, mais dans ce cas, un index est aussi de la dénormalisation... et je ne pense pas que quiconque se dresse contre la création d'indexes.
    Là encore, tout est question de contexte, de tests...

    Mais à choisir, entre une colonne "classique" alimentée par un trigger ou autre, et un colonne calculée, pour ma part il n'y a pas photo : c'est la colonne calculée qui sera l'objet de mon choix.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Michel.Priori Voir le message
    T'es sérieux là ?
    Tu conseilles à une personne qui s'annonce comme débutante, qui ne sait pas faire un calcul en ligne, de mettre en place au niveau structurel une information calculée dont on ne sait rien de l'importance de sa récurrence sur l'ensemble des requêtes.
    Ben là, on peut être débutant et pas débile pour autant...

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

Discussions similaires

  1. Comparaison de deux colonnes sur une même table
    Par Euniceafb dans le forum Requêtes
    Réponses: 4
    Dernier message: 18/08/2017, 10h04
  2. Agreger deux colonnes d'une même table
    Par calagan99 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/03/2008, 14h24
  3. Comparer deux colonnes d'une même table
    Par snoopy69 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 08/01/2008, 10h05
  4. Réponses: 13
    Dernier message: 20/04/2007, 17h30
  5. Réponses: 8
    Dernier message: 19/04/2007, 19h41

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