来自2个查找表的Mysql查询

时间:2012-11-09 11:55:10

标签: mysql

对于改善广告公司工作流程的项目,请使用不同的表格查询这些表格:

clients: Contains ID, business, lastname, name, addresse, city and zoneID etc
lookupClients: ID, clientID, productID, date, part1, part2, sizeID, design, quant
lookupPrices: ID, productID, sizeID, price
products: ID, artname, image, category
size: ID, size, width, height

要获取信息,我需要进行以下SQL-Query

SELECT products.ID AS PID, clients.zoneID AS ZID, clients.business, clients.address, size.size, lookupClients.quant, lookupClients.date, lookupClients.part1, lookupClients.part2, lookupPrices.price
FROM lookupClients, lookupPrices, clients, products, size, zone
WHERE lookupClients.clientID = clients.ID
AND lookupClients.sizeID = lookupPrices.sizeID
AND lookupClients.sizeID = size.ID
AND lookupClients.productID = products.ID
AND lookupPrices.productID = products.ID
AND clients.zoneID = zone.ID
ORDER BY clients.zoneID, lookupClients.sizeID, clients.business

到目前为止,这个查询工作正常,我用它在mysql中构建一个视图。但问题是,当y想要构建此视图的总和并且对colums part1,part2和price mysql求和时返回完全错误的结果。有没有人有想法改进这个查询以获得正确的总和?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

像这样添加GROUP BY子句:

SELECT 
  p.ID AS PID, 
  c.zoneID AS ZID, 
  c.business, 
  c.address, 
  s.size, 
  lc.quant, 
  lc.date, 
  SUM(lc.part1), 
  SUM(lc.part2), 
  SUM(lp.price)
FROM lookupClients lc 
INNER JOIN lookupPrices lp ON lc.sizeID = lp.sizeID
INNER JOIN clients c ON lc.clientID = c.ID
INNER JOIN products p ON lc.productID = p.Id 
INNER JOIJ size s ON s.ID = lc.sizeId
INNER JOIN zone z ON c.zoneID = z.id
GROUP BY p.ID, c.zoneID, c.business, c.address, s.size, lc.quant, lc.date
ORDER BY c.zoneID, lc.sizeID, c.business