2010-08-12 6 views
2

Comment puis-je combiner 2 groupes par conditions? J'ai des enregistrements pour chaque identifiant pour chaque heure dans une journée et je veux regrouper les informations par premier ID et tous les enregistrements de cet ID ce jour-là puis deuxième ID et tous les enregistrements pour cela dans la journée.Grouper par - plusieurs conditions - MySQL

Mon exemple de requête est la suivante:

SELECT 
    r.name 
    , r.network 
    , r.namestring 
    , i.name 
, i.description 
    , r.rid 
    , i.id 
    , d.dtime 
    , d.ifInOctets 
FROM router AS r 
INNER JOIN interface AS i 
ON r.rid = i.rid 
INNER JOIN 1279080000_1_60 AS d 
ON i.id = d.id 
AND dtime BETWEEN 1279113600 AND 1279115400 
WHERE r.network = "ITPN" 
AND i.status = "active" 
GROUP BY i.id AND d.dtime    // each id with all its dtime 

Cela finit toujours par me donner une valeur globale de cet identifiant. Une idée de ce que je pourrais utiliser ??? Je ne veux pas résumer toutes les valeurs.

Merci,

Répondre

6

Pour groupe par plusieurs expressions, vous devez les séparer par une virgule, pas ET:

GROUP BY i.id, d.dtime 

Vous devez également veiller à ce que deux dossiers forment le même jour ont la même valeur dtime. Ce n'est pas clair à partir de votre question si c'est ou non le cas.

+0

Salut, j'ai essayé ce que vous avez dit mais cela ne fonctionne pas. Je suppose que le problème est que dtime est différent. Mes enregistrements sont comme ceci par exemple pour: id dtime ifInOctet 1 09:20 100 2 09:20 90 3 09:20 78 1 9: 21 23 2 09:21 50 1 9:22 3 3 9:22 200 Je veux regrouper tous ensemble 1, mais ne veulent pas d'additionner les valeurs de IfInOctet. Une idée? – JJunior