表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日期在两个时间戳之间的行?
答案 0 :(得分:3)
您可以使用INNER JOIN
加入这两个表格。查询结果只显示items
中Table1
的{{1}},这两个日期之间匹配,否则它不会包含在结果列表中。
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
要进一步了解联接,请访问以下链接:
答案 1 :(得分: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";