SUM .... oui mais comment ... ?

SUM .... oui mais comment ... ? - SQL/NoSQL - Programmation

Marsh Posté le 28-12-2006 à 17:17:55    

Bonjour,
 
Je suis sous MYSQL et je cherche a effectuer la somme d'une collone (DUREE_MN) contenue dans la requete suivante :
 
SELECT M.PSEUDO, M.CLASSE, (hour(DI.DATE_FIN-DI.DATE_DEBUT)*60 + minute(DI.DATE_FIN-DI.DATE_DEBUT) - (DATEDIFF(DI.DATE_FIN, DI.DATE_DEBUT)*4560)) AS DUREE_MN
FROM dkp_in DI, membres M
WHERE M.ID = DI.ID_MEMBRE
AND M.ACTIF = 1
AND DI.ACTIF = 1
ORDER BY PSEUDO

 
 
 
 
le résultat est le suivant :
 
PSEUDO           CLASSE    DUREE_MN
Toto              MAGE       90
Toto              MAGE       190
Dupond            DRUIDE     120

 
 
 
En fait, je souhaiterais avoir ce résultat :
 
PSEUDO           CLASSE    DUREE_MN
Toto              MAGE       280
Dupond            DRUIDE     120

 
 
J'ai essayé de faire ca mais ca ne marche pas !!!
 
SELECT R1.PSEUDO, R1.CLASSE, SUM(R1.DUREE_MN) AS NB_DKP FROM
(
SELECT M.PSEUDO, M.CLASSE, DI.ID_MEMBRE, DI.DATE_DEBUT, DI.DATE_FIN, DI.LIBELLE_RAID, (hour(DI.DATE_FIN-DI.DATE_DEBUT)*60 + minute(DI.DATE_FIN-DI.DATE_DEBUT) - (DATEDIFF(DI.DATE_FIN, DI.DATE_DEBUT)*4560)) AS DUREE_MN
FROM dkp_in DI, membres M
WHERE M.ID = DI.ID_MEMBRE
AND M.ACTIF = 1
AND DI.ACTIF = 1
ORDER BY PSEUDO
) R1
GROUP BY R1.PSEUDO, R1.DUREE_MN, R1.CLASSE  
LIMIT 0,100

 
 
Je vous remercie par avance de vos réponses :)


Message édité par locas le 28-12-2006 à 17:18:33
Reply

Marsh Posté le 28-12-2006 à 17:17:55   

Reply

Marsh Posté le 29-12-2006 à 08:21:18    

en lisant en diagonale ta requete vires le R1.DUREE_MN de ton group by

Reply

Marsh Posté le 29-12-2006 à 10:57:02    

SELECT M.PSEUDO, M.CLASSE, SUM(hour(DI.DATE_FIN-DI.DATE_DEBUT)*60 + minute(DI.DATE_FIN-DI.DATE_DEBUT) - (DATEDIFF(DI.DATE_FIN, DI.DATE_DEBUT)*4560)) AS NB_DKP
FROM dkp_in DI, membres M
WHERE M.ID = DI.ID_MEMBRE
AND M.ACTIF = 1
AND DI.ACTIF = 1
GROUP BY M.PSEUDO, M.CLASSE  
LIMIT 0,100

Reply

Marsh Posté le 29-12-2006 à 11:45:59    

merci pour ces réponses.
 
J'ai essayé vos 2 solutions mais j'ai le meme résultat qu'avec ma première solution. C'est assez bizarre :(
 
Je peux vous fournir le script si vous voulez pour essayer :
 
-- phpMyAdmin SQL Dump
-- version 2.9.0.3
-- http://www.phpmyadmin.net
--  
-- Serveur: localhost
-- Généré le : Vendredi 29 Décembre 2006 à 11:45
-- Version du serveur: 5.0.27
-- Version de PHP: 5.2.0
--  
-- Base de données: `dkp`
--  
 
-- --------------------------------------------------------
 
--  
-- Structure de la table `dkp_in`
--  
 
CREATE TABLE `dkp_in` (
  `ID` bigint(20) NOT NULL auto_increment,
  `DATE_DEBUT` datetime NOT NULL,
  `DATE_FIN` datetime NOT NULL,
  `LIBELLE_RAID` varchar(250) NOT NULL,
  `ID_MEMBRE` bigint(20) NOT NULL,
  `ACTIF` smallint(6) NOT NULL default '1',
  PRIMARY KEY  (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
 
--  
-- Contenu de la table `dkp_in`
--  
 
INSERT INTO `dkp_in` (`ID`, `DATE_DEBUT`, `DATE_FIN`, `LIBELLE_RAID`, `ID_MEMBRE`, `ACTIF`) VALUES  
(1, '2006-12-28 15:00:36', '2006-12-28 16:30:36', 'Molten Core', 1, 1),
(2, '2006-12-20 20:06:33', '2006-12-20 23:16:33', 'BWL', 1, 1),
(3, '2006-12-20 23:06:33', '2006-12-21 01:06:33', 'BWL', 4, 1);
 
-- --------------------------------------------------------
 
--  
-- Structure de la table `dkp_out`
--  
 
CREATE TABLE `dkp_out` (
  `ID` bigint(20) NOT NULL auto_increment,
  `ID_RAID` bigint(20) NOT NULL,
  `ID_MEMBRE` bigint(20) NOT NULL,
  `ID_ITEM` bigint(20) NOT NULL,
  `DKP_DEPENSE` int(11) NOT NULL default '0',
  PRIMARY KEY  (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
 
--  
-- Contenu de la table `dkp_out`
--  
 
 
-- --------------------------------------------------------
 
--  
-- Structure de la table `membres`
--  
 
CREATE TABLE `membres` (
  `ID` bigint(20) NOT NULL auto_increment,
  `PSEUDO` varchar(150) NOT NULL,
  `CLASSE` varchar(100) NOT NULL,
  `ACTIF` tinyint(4) NOT NULL default '1',
  PRIMARY KEY  (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
 
--  
-- Contenu de la table `membres`
--  
 
INSERT INTO `membres` (`ID`, `PSEUDO`, `CLASSE`, `ACTIF`) VALUES  
(1, 'Dragonaute', 'MAGE', 1),
(2, 'Kpcube', 'DEMONISTE', 1),
(3, 'Guertly', 'VOLEUR', 1),
(4, 'Zynie', 'DRUIDE', 1),
(5, 'Ratchet', 'GUERRIER', 1),
(6, 'Chassetou', 'CHASSEUR', 1);
 
Merci par avance à vous tous :)

Reply

Marsh Posté le 29-12-2006 à 12:12:34    

Donne les détails de l'erreur mySql ... :)

Reply

Marsh Posté le 29-12-2006 à 12:16:08    

En fait, aucune erreur mais juste 0 enregistrements retournés

Reply

Marsh Posté le 29-12-2006 à 12:44:05    

es tu sûr qu'il y a bien des enregistrements dans tes tables ?

Reply

Marsh Posté le 29-12-2006 à 13:25:24    

Oui tout a fait sûr ( cf. script ci-dessus )

Reply

Marsh Posté le 29-12-2006 à 13:31:43    

Ecris la requête par étapes, d'abord la jointure, puis le group by, et vérifie les lignes retournées ...

Reply

Marsh Posté le 29-12-2006 à 13:35:15    

ok je vais reessayer de la construire. Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed