我有一个用于搜索的简单查询。我的问题是这个查询是因为每次有事务时都会添加mysql中的记录,当只有一行或几行而不是更多行时,查询会返回一个数据列表。
正如你在这里看到的那样 - 查询会返回很多行,我希望它返回
BLSH103 A001A 31 24/01/2014
可以将产品名称和产品名称放在哪里托盘空间是一样的总结?然后显示最大的日期?
答案 0 :(得分:2)
只需在t.Quantity(和group by子句)上使用sum函数
SELECT (t.ProductName) as Pname ,(s.PalletSpace) as PSpace, sum(t.Quantity) as Qty,(t.TransactionDate) as Transac
FROM PalletSpaces s
JOIN ProductTrans t
ON s.PalletSpaceID = t.PalletSpace
WHERE t.ProductName LIKE 'BLSH103' OR s.PalletSpace LIKE 'BLSH103'
group by
Pname,
pSpace,
Transac -- if you want to group by date also...
顺便说一下,以这种方式使用LIKE(没有%
)没有多大意义......
请参阅SqlFiddle
答案 1 :(得分:0)
您只需要以这种方式使用GROUP BY和SUM:
SELECT (t.ProductName) as Pname ,(s.PalletSpace) as PSpace, SUM(t.Quantity) as Qty,(t.TransactionDate) as Transac
FROM PalletSpaces s
JOIN ProductTrans t
ON s.PalletSpaceID = t.PalletSpace
WHERE t.ProductName LIKE 'BLSH103' OR s.PalletSpace LIKE 'BLSH103'
GROUP BY t.ProductName, s.PalletSpace;