2017-09-11 3 views
-1

J'ai un tableau des inventaires et je dois additionner chaque article de chaque emplacement. Donc la table de comptage est un essentiellement un journal de comptageRésumer les enregistrements disctinct MySQL

+-----------+---------+---------+-------------+---------------------+ 
| record_id | item_id | count | location_id | time_stamp   | 
+-----------+---------+---------+-------------+---------------------+ 
|   1 |  129 | 3.00 |   1 | 2017-08-23 16:56:05 | 
|   2 |  129 | 14.00 |   2 | 2017-08-23 16:57:28 | 
|   3 |  129 | 4.00 |   1 | 2017-08-31 16:59:39 | 
|   4 |  129 | 14.00 |   2 | 2017-08-31 17:01:27 | 
|   5 |  133 | 4.00 |   1 | 2017-08-23 17:02:21 | 
|   6 |  133 | 0.00 |   2 | 2017-08-23 17:03:22 | 
|   7 |  133 | 8.00 |   3 | 2017-08-23 17:03:55 | 
|   8 |  133 | 4.00 |   1 | 2017-08-26 17:04:22 | 
|   9 |  133 | 1.00 |   2 | 2017-08-26 17:05:08 | 
|  10 |  133 | 9.00 |   3 | 2017-08-26 17:05:44 | 
+-----------+---------+---------+-------------+---------------------+ 

Donc, l'article 129 a un total de 18. Il a été compté sur 8/23, mais le nombre plus récente sur 8/31 4 montre dans un endroit 1 et 14 dans l'emplacement 2. Donc ce dont j'ai besoin est un nombre total (somme) de chaque article dans tous les emplacements, basé sur le compte le plus récent. Toute aide est appréciée.

+0

Euh, à quoi ressemblerait le résultat souhaité? Et voir https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql- requête – Strawberry

+0

très simple juste l'item_id et un nombre total sommant le nombre le plus récent de chaque emplacement –

Répondre

0

Solution avec sous-requête corrélative:

SELECT t1.item_id, SUM(t1.count) 
FROM Table1 t1 
WHERE t1.time_stamp = 
     (SELECT MAX(t11.time_stamp) 
     FROM Table1 t11 
     WHERE t1.item_id=t11.item_id AND t1.location_id=t11.location_id) 
GROUP BY t1.item_id 

Fiddle

+0

Y arriver, mais cela ne prend pas en compte le fait qu'il peut y avoir plusieurs emplacements pour n'importe quel élément. J'ai donc besoin du compte le plus récent de l'emplacement 1, ajouté au compte le plus récent de l'emplacement 2, etc. –

+0

Correction de la requête et ajout de Fiddle (Demo). –

1

Je ne sais pas si c'est ce que vous voulez ou non, vous devez publier votre résultat escompté OP, alors nous pouvons vous donner ce que vous veux exactement.

Vous pouvez essayer l'instruction SQL suivante:

select 
    t1.`item_id`, 
    sum(t1.`count`) sum_count 
from yourtable t1 
inner join (
    select `item_id`, `location_id`, max(`time_stamp`) `time_stamp` 
    from yourtable 
    group by `item_id`, `location_id` 
) t2 
on t1.`item_id` = t2.`item_id` 
and t1.`location_id` = t2.`location_id` 
and t1.`time_stamp` = t2.`time_stamp` 
group by t1.`item_id` 

Et voir DEMO à SQLFiddle.

+0

Je ne sais pas si c'est ce que l'on veut non plus, mais cela fournit une partie de l'effort absent dans la question – Strawberry