Page 1 sur 1

Problème SELECT avec plusieurs SUM--> les champs sont NUL

Posté : 02 févr. 2007, 01:51
par analfabete
Bonjour à tous !
Je suis actuellement en train de réunir plusieur SELECT en une seul afin d'éviter de nombreuse requetes inutiles. 8-)
Ains je désire calculer la somme des points du jeux1, du jeux2 et jeux3 qui provienne de la table historique_gains, calculer le total1 qui provient de la table b_ace p et total2 qui provient de la table b_cadibou le tout en une seul requete!
Voilà ainsi ma requete:
$req_1=mysql_query('SELECT      SUM(h.jeux1) AS euro_clique,
                                                        SUM(h.jeux2) AS jeux1,
                                                        SUM(h.jeux3) AS jeux2,
                                                        SUM(h.jeux4) AS jeux3,
                                                        SUM(p.total) AS total1,
                                                        SUM(c.total) AS total2
                                        FROM historique_gains h ,b_ace p ,b_cadibou c
                                        WHERE h.idmembre=\''.$_SESSION['idmembre'].'\' AND p.idmembre=\''.$_SESSION['idmembre'].'\' AND c.idmembre=\''.$_SESSION['idmembre'].'\'');
Cependant lorsque je fait un print_r($res1) j'obtient des champs NULL:
Array
(
    [jeux1] =>
    [jeux2] =>
    [jeux3] =>
    [total1] =>
    [total2] =>
)
Avec une requete par table c'est a dire trois SELECT cela marche nikel mais avec un seul SELECT sa ne marche pas...
Je vous remercie d'avance.

Posté : 02 févr. 2007, 04:13
par Hubert Roksor
Lorsque tu fais un SUM() si ne serait-ce qu'une seule valeur est NULL alors le résultat est NULL. Tu peux remplacer les valeurs NULL par 0 grâce à la fonction COALESCE()

Code : Tout sélectionner

SELECT SUM(COALESCE(champs, 0))

Posté : 02 févr. 2007, 11:25
par analfabete
Je viens de rajouter COALESCE de cette façon :
 SUM(COALESCE(h.jeux2,0)) AS jeux1, 
Mais rien n'a faire cela ne marche toujours pas, cependant je me suis amuser a rajouter dans chaque table une ligne de facon que les champs que je désire ne soit pas nul et cela marche très bien.
Je veux préciser que des fois par exemple SUM(h.jeux2) AS jeux1, WHERE idmembre=N ne retourne aucunne ligne...