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 :

Somme d'une colonne dans plusieurs tables [2014]


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Points : 117
    Points
    117
    Par défaut Somme d'une colonne dans plusieurs tables
    Salut à tous j'ai créé 2 tables avec le même nombre de colonne avec les nom identique pour chaque table
    [dbo].[ATELIER_FABRICATION_S_I] et chacune des tables contient les nom de colonnes suivante:[dbo].[ADMINISTRATIONS_S_I],
    Nom : Capture2.PNG
Affichages : 119
Taille : 8,0 Ko
    Je souhaite donc faire la somme de la colonne [SOMME_P(KW)] pour se faire j'écrit la recette suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT SUM([ADMINISTRATIONS_S_I].[SOMME_P(KW)])+SUM([ATELIER_FABRICATION_S_I].[SOMME_P(KW)])
    FROM [dbo].[ADMINISTRATIONS_S_I],[dbo].[ATELIER_FABRICATION_S_I]
    Nom : Capture3.PNG
Affichages : 118
Taille : 2,6 Ko
    Mais j’obtiens comme résultât NULL alors que j'ai des valeurs saisi dans une des tables. et j'ai bien pris la peine de prendre comme valeur par défaut 0 dans cette colonne lors de la création des tables. Comment corrigé se Problème? merci de vous intéresser à mon cas

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Dans ce cas particulier où l'une des tables est vide, la somme sur la table vide retourne NULL et toute opération qui implique un NULL (ici l'addition) retourne NULL.

    Si tes deux tables avaient contenu des lignes, ton résultat aurait été erroné.
    Tu effectues un produit cartésien entre tes deux tables qui aura pour conséquences de multiplier les lignes.

    Pour résoudre ton problème, il faut que tu exécutes la somme sur l'UNION de tes tables
    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.

  3. #3
    Membre régulier
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Points : 117
    Points
    117
    Par défaut
    Merci Al1_24 de t'intéresser à mon cas mais je ne comprend pas bien ta méthode peut-tu être un peut plus explicite?

  4. #4
    Membre régulier
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Points : 117
    Points
    117
    Par défaut
    Si j'ai bien compris la méthode de Al1 24 Voila le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  [ADMINISTRATIONS_S_I].[SOMME_P(KW)] from [dbo].[ADMINISTRATIONS_S_I]
    union 
    SELECT [ATELIER_FABRICATION_S_I].[SOMME_P(KW)] from [dbo].[ATELIER_FABRICATION_S_I]
     
    SELECT  SUM([ATELIER_FABRICATION_S_I].[SOMME_P(KW)]+[AMINOIR_T1_S_I].[SOMME_P(KW)]) AS SOMME from [ATELIER_FABRICATION_S_I], [AMINOIR_T1_S_I]
    mais j’obtiens toujours la valeur NULL comme résultat
    Nom : Capture4.PNG
Affichages : 109
Taille : 4,8 Ko

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 674
    Points
    674
    Par défaut
    Bonjour,

    Essayez donc avec cette méthode :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    SELECT SUM(ISNULL([ADMINISTRATIONS_S_I].[SOMME_P(KW)],0))+SUM(ISNULL([ATELIER_FABRICATION_S_I].[SOMME_P(KW)],0))
    FROM [dbo].[ADMINISTRATIONS_S_I],[dbo].[ATELIER_FABRICATION_S_I]

    La fonction ISNULL(valeur,0) ayant pour objectif de remplacer les NULL par des 0 si vous souhaitrez remplacer par une valeur libre a vous de faire la modification nécéssaire.

    Un peu d'informations :

    https://msdn.microsoft.com/fr-fr/library/ms184325.aspx



    A+

    Julien
    MCSA SQL SERVER |MCT | MVP Data Platform

  6. #6
    Membre régulier
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Points : 117
    Points
    117
    Par défaut
    Merci julien94320 Sa marche très Bien merci

  7. #7
    Membre régulier
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Points : 117
    Points
    117
    Par défaut
    julien94320 puigeavoir votre mail?

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Si toutes les tables à sommer ont la même structure, je voyais plutôt une solution de la forme suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT  SUM(src.[SOMME_P(KW)])
    FROM    (   SELECT  *
                FROM    [dbo].[ADMINISTRATIONS_S_I]
            UNION ALL
                SELECT  *
                FROM    [dbo].[ATELIER_FABRICATION_S_I]
            )   AS  src
    ;
    Si les tables ont des structures différentes, il conviendra bien sur de remplacer * par la liste des colonnes communes ou équivalentes.

    Quelle que soit la solution retenue, elle met simplement en évidence une lacune au niveau de la modélisation de la base de données. Ces tables de structure identique devraient être regroupées en une seule, en y ajoutant un indicateur du type de donnée (administration ou atelier_fabrication ou ...)
    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.

  9. #9
    Membre régulier
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Points : 117
    Points
    117
    Par défaut
    Ok merci al1_24 je l'essayer aussi merci beaucoup

  10. #10
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Points : 674
    Points
    674
    Par défaut
    Citation Envoyé par Massigne Voir le message
    julien94320 puigeavoir votre mail?
    Bonjour,

    Je ne donne pas mon mail, par contre si vous avez une intérrogation ou une demande particulière vous pouvez m'envoyer un MP.

    Sachez que c'est d'ordre général vous pouvez ouvrir un sujet, il n'y a pas de questions "bete" et si vous vous posez la question il y a de forte chance pour que quelqu'un d'autre se pose la question donc que votre question servira un jour ou l'autre.

    A+

    Julien
    MCSA SQL SERVER |MCT | MVP Data Platform

  11. #11
    Membre régulier
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Points : 117
    Points
    117
    Par défaut
    Merci julien94320 bien recu

  12. #12
    Membre régulier
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Points : 117
    Points
    117
    Par défaut
    al1_24 très intéressant votre méthode elle est vraiment idéale sur on a plusieurs tables

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

Discussions similaires

  1. Ajouter une colonne dans plusieurs tables a la fois
    Par NicaeaCivitas dans le forum Développement
    Réponses: 2
    Dernier message: 15/06/2011, 10h38
  2. Réponses: 3
    Dernier message: 06/11/2006, 08h14
  3. [sql 2005]: changer le nom d'une colonne dans un table
    Par TheLittle dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2006, 15h29
  4. [SQL] Une requête dans plusieurs tables
    Par Anduriel dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/12/2005, 16h23
  5. Comment rechercher une chaine dans plusieurs tables ?
    Par tsing dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/11/2005, 18h04

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