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

Requêtes MySQL Discussion :

Addition de plusieurs tables


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Par défaut Addition de plusieurs tables
    Bonjour,

    Je chercher à additionner plusieurs tables entre elle, hors celle ci n'on pas le même nombre d'enregistrements.
    Je m'explique, j'ai des tables avec des données pour toutes les villes d'une région et d'autres ou je n'ai qu'une partie des villes.

    Le problème qui se pose est que quand je veux faire mon addition, il me fait le calcul seulement pour les villes présentes dans toutes les tables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT E1.CCM,E1.COM,(E1.CH4+E2.CH4+E3.CH4+E4.CH4+E5.CH4) AS CH4 
    FROM EMI_SNAP_10_01_00 E1,EMI_SNAP_10_02_00 E2,EMI_SNAP_10_03_00 E3,EMI_SNAP_10_04_00 E4,EMI_SNAP_10_05_00 E5
    WHERE E1.CCM=E2.CCM AND E1.CCM=E3.CCM AND E1.CCM=E4.CCM AND E1.CCM=E5.CCM;
    En faisant des jointures, la valeur pour les villes non référencés dans toutes les tables est NULL alors qu'il devrait au moins y avoir le résultat pour la table dans lequel la ville est présente.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT E1.CCM,E1.COM,(E1.CH4+E2.CH4+E3.CH4+E4.CH4+E5.CH4) AS CH4 
    FROM EMI_SNAP_10_01_00 E1
    LEFT OUTER JOIN EMI_SNAP_10_02_00 E2 ON E1.CCM=E2.CCM
    LEFT OUTER JOIN EMI_SNAP_10_03_00 E3 ON E1.CCM=E3.CCM
    LEFT OUTER JOIN EMI_SNAP_10_04_00 E4 ON E1.CCM=E4.CCM
    LEFT OUTER JOIN EMI_SNAP_10_05_00 E5 ON E1.CCM=E5.CCM;
    Auriez-vous une idée ?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 114
    Par défaut ifnull
    Il faudrait utiliser la fonction IfNull de Mysql :

    Code :

    SELECT E1.CCM,E1.COM,(IFNULL(E1.CH4,0)+IFNULL(E2.CH4,0)+IFNULL(E3.CH4,0)+IFNULL(E4.CH4,0)+IFNULL(E5.CH4,0)) AS CH4
    FROM EMI_SNAP_10_01_00 E1
    LEFT OUTER JOIN EMI_SNAP_10_02_00 E2 ON E1.CCM=E2.CCM
    LEFT OUTER JOIN EMI_SNAP_10_03_00 E3 ON E1.CCM=E3.CCM
    LEFT OUTER JOIN EMI_SNAP_10_04_00 E4 ON E1.CCM=E4.CCM
    LEFT OUTER JOIN EMI_SNAP_10_05_00 E5 ON E1.CCM=E5.CCM;

    Car pour MySql 1+NULL = NULL !!!

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Par défaut
    Je te remercie beaucoup.

    Je ne connaissais pas cette fonction de mysql. Tu m'aides beaucoup.

    Encore merci

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

Discussions similaires

  1. Addition de plusieurs lignes consécutives d'une table
    Par bisk32 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/05/2011, 21h21
  2. addition plusieurs tables
    Par fabio83 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/04/2008, 09h29
  3. Une seule table VS plusieurs tables
    Par LostControl dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/08/2003, 10h56
  4. [SQL] Sélection ds plusieurs table
    Par lord_paco dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/07/2003, 17h53

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