1

表格1

---------------------------------------
| id | item | MU | quantity | file_id |
---------------------------------------
| 1  |item1 | oz | 3.5      | 003     |
| 2  |item2 | kg | 1.1      | 001     |
| 3  |item1 | oz | 0.2      | 001     |
| 3  |item1 | kg | 3        | 001     |

表 2

 ----------------------------
 | id | date      | file_id |
 ----------------------------
 | 1  |timestamp1 | 001 |
 | 2  |timestamp2 | 002     |
 | 3  |timestamp3 | 003     |

我要做的是为每组具有相同 MU 的项目选择数量的总和。我设法用这个查询来做到这一点。

$query = "SELECT item,SUM(quantity) from table1 GROUP BY item,mu";

with a great result, exactly what i wanted
----------------------------------
| id | item | MU | SUM(quantity) |
----------------------------------
| 1  |item1 | oz | 3.7           |
| 2  |item2 | kg | 1.1           |
| 3  |item1 | kg | 3             |

但是现在,我如何获取他们的 file_id 日期在两个时间戳之间的行?

4

2 回答 2

3

您可以使用 加入两个表INNER JOIN。查询的结果将只显示两个日期之间itemsTable1匹配项,否则不包含在结果列表中。

SELECT  MIN(a.iD) ID, a.item, a.MU,
        SUM(a.quantity) totalQuantity
FROM    table1 a
        INNER JOIN table2 b
            ON a.file_ID = b.file_ID 
WHERE   b.date BETWEEN startDateHere AND endDateHere 
GROUP   BY a.item, a.MU

要进一步了解有关联接的更多信息,请访问以下链接:

于 2013-05-19T10:03:32.817 回答
2

LEFT JOIN您可以通过在单个查询中使用和连接两个表来实现此目的,只需将initialdate和替换finaldate为您当前的时间戳

$query = "SELECT a.id, a.item, a.mu, SUM(a.quantity) as total_quantity from table1 a left join table2 b ON a.file_id = b.file_id WHERE b.date BETWEEN initialdate AND finaldate GROUP BY a.item,a.mu";
于 2013-05-19T10:03:46.290 回答