[RESOLU] Sorte de SUM COUNT de plusieurs timestamps

Eléphant du PHP | 163 Messages

20 août 2014, 01:09

Hey hey !

J'ai une petite question : Comment additionner des timestamps depuis une table secondaire ?

Pouvez-vous m'aider à écrire cette requête svp ?

En gros j'ai une table CLIENTS (ID_CLI (int6), NAME_CLI (varchar255)...)
et une table qui reprend des plages de connexion que j'ai appelé PLAGES (ID_PLA(int9), IN_PLA(datetime), OUT_PLA(datetime)...) grosso modo IN arrivée OUT départ.

L'idée est de faire une sorte de SUM de toutes les PLAGES pour chaque CLIENT.

En espérant avoir été clair.

Merki !

dk.

Eléphant du PHP | 113 Messages

20 août 2014, 12:27

SELECT SUM(SELECT (IN_PLA - OUT_PLA) FROM PLAGES JOIN CLIENTS ON ID_CLI) AS TOTAL_CO

à tester 8-|

ynx
Mammouth du PHP | 586 Messages

20 août 2014, 12:36

Salut,

Quelque chose comme ceci ?
SELECT c.ID_CLI, c.NAME_CLI, SUM(p.OUT_PLA - p.IN_PLA) FROM CLIENTS c LEFT JOIN PLAGES p ON c.ID_CLI = p.ID_CLI GROUP BY c.ID_CLI

Eléphant du PHP | 163 Messages

20 août 2014, 14:31

Salut toytoy, salut ynx,

MERCI à tous les 2 pour votre soutien, c'est super sympa !

et pour vous dire que vous avez résolu mon problème.

En rajoutant la fonction UNIX_TIMESTAMP à SUM(UNIX_TIMESTAMP( p.OUT_PLA ) - UNIX_TIMESTAMP( p.IN_PLA ) ) ça marche du tonnerre !!!!!

MERCI ! MERCI !! MERCI !!!

Eléphant du PHP | 163 Messages

20 août 2014, 14:53

Re, dernier point svp

comment faire pour rajouter une condition sur le sum

j'ai fait un "as total" que j'essaie de tester sur le where qui vient where total between 1 and 10 mais ça ne marche pas :(

Mammouth du PHP | 571 Messages

20 août 2014, 15:22

Re, dernier point svp

comment faire pour rajouter une condition sur le sum

j'ai fait un "as total" que j'essaie de tester sur le where qui vient where total between 1 and 10 mais ça ne marche pas :(
pour filtrer les lignes ou la somme issue du groupement il faut appliquer la clause having.
//--
GROUP BY c.ID_CLI, c.NAME_CLI
HAVING total>1 AND total<10;

Eléphant du PHP | 163 Messages

20 août 2014, 15:34

Merci Yann, c'est ce que j'étais en train de tester. Je me reloggué pour poster la solution ;)

Merci à toi également !

Code : Tout sélectionner

HAVING SUM(UNIX_TIMESTAMP(p.OUT) - UNIX_TIMESTAMP(p.IN)) BETWEEN 0 AND 10
++

do_ok