SQL - Mélanger DISTINCT et SUM ??

Eléphant du PHP | 164 Messages

21 janv. 2009, 09:45

Hello,

J'ai actuellement la requete :

Code : Tout sélectionner

SELECT SUM(wt_palissade_stock01) as stock01 FROM WALLTEK_PALISSADE where (wt_palissade_stock01!='' OR wt_palissade_stock01!='0') AND wt_palissade_datepose <= '".$day."' AND wt_palissade_datedepose >= '".$day."' AND wt_palissade_id_poseur='".$stock['wt_stock_id']."'";
seulement le résultat ne me convient pas l'idéal serait que je mette un disctinct par dessus ...
est ce possible de mélanger disctinct et sum ?

Code : Tout sélectionner

CREATE TABLE IF NOT EXISTS `WALLTEK_PALISSADE` ( `wt_palissade_id` int(11) NOT NULL auto_increment, `wt_palissade_numdossier` int(6) NOT NULL default '0', `wt_palissade_datepose` date NOT NULL default '0000-00-00', `wt_palissade_datedepose` date NOT NULL default '0000-00-00', `wt_palissade_stock01` varchar(3) NOT NULL default '0', `wt_palissade_id_poseur` varchar(3) NOT NULL, PRIMARY KEY (`wt_palissade_id`) );

Eléphant du PHP | 164 Messages

23 janv. 2009, 11:59

Personne ne peux me venir en aide ? :oops:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

23 janv. 2009, 12:47

Peut-être ta question a-t-elle désorienté ses lecteurs...

Par définition, sum() est une fonction d'agrégation qui ne renvoie qu'un résultat : le total calculé.
Il est donc inapproprié de vouloir identifier de manière unique les valeurs parcourues.

Ou je n'ai pas compris ta question...

Eléphant du PHP | 164 Messages

23 janv. 2009, 14:41

en fait j'ai une liste qui se présente comme telle :

A-5
C-2
B-2
A-3
B-1
C-5
C-2

actuellement il m'affiche autant de lignes que de wt_palissade_id ... donc ça ressemble à ça : les totaux sont bons certes mais ...
A-8
C-9
B-3
A-8
B-3
C-9
C-9



alors que moi je veux une ligne par wt_stock_id (voire dans les conditions de ma requête). Voilà ce qu'il me faudrait :
A-8
B-3
C-9
Bon évidement il y a d'autres conditions mais le résultat sera le même ...

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

23 janv. 2009, 16:44

As-tu regardé du côté de GROUP BY ?...

Eléphant du PHP | 164 Messages

28 janv. 2009, 14:12

Non en fait j'ai résolu le probleme ...
j'ai imbiqué deux while l'un dans l'autre avec deux requêtes ... comme quoi laisser de côté quelques jours ça aide j'ai trouvé en 5 minutes :)

Merci quand même ;)

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

28 janv. 2009, 18:36

Si tu le souhaites, tu peux montrer ta solution.
Je pense qu'elle doit être optimisable...

:idea: De manière générale, éviter autant que possible les requêtes imbriquées.

Eléphant du PHP | 164 Messages

28 janv. 2009, 18:47

argh oui mais là pas possible LOL car c'est beaucoup plus complexe que l'exemple que j'ai donné ...

en gros j'ai un while qui affiche

TITRE A
TITRE B
TITRE C

et un second while qui affiche (dans un tableau et tout et tout)

A1 A2 A3 A4 A5 A6 ....
B1 B2 B3 B4 B5 B6 ...
C1 C2 C3 C4 C5 C6 ...

A1 (par exemple) est la somme de tous les A1 correspondant à "titre A" à une date donnée, avec d'autres conditions que je vous épargnerai.

J'ai retourné le problème dans tous les sens je n'ai pas le choix que d'imbriquer deux while.

edit : à préciser que le chargement de la page se fait assez rapidement malgré le grand nombre de requêtes.