[英]multiquery count sql
我有一个使用SUM的脚本来计算所有已订购的商品,因此产品1已订购6次,产品2已订购9次。 现在在一个单独的表中(从中获取订单编号),可能会有一个奖励代码。 如果此奖励代码是一种产品(从其他表格中检查过),那么我还需要将其添加到计数中。
解释很奇怪。 这是我的代码。
$query = "SELECT productid, SUM(quantity) FROM `order` GROUP BY productid";
$result = mysql_query($query) or die(mysql_error());
// Print out result
while($row = mysql_fetch_array($result)){
$prodname = fetchproductname($row[productid]);
echo $prodname ." - ". $row['SUM(quantity)'];
echo "<br />";
}
我需要知道是否可以存储所有这些结果,然后查询奖金代码,获取商品编号(如果有)并将其添加到总计中。 我尝试了一些不同的查询和使用while语句的方法,但都没有遇到问题。
我正在使用4个表格,订单(产品ID和数量等),产品(包含产品名称),发货(包含奖励代码),奖金(包含productid)
也许我错过了复杂性,但听起来您只需要从产品循环中查询奖励代码:
while($row = mysql_fetch_array($result)){
$prodname = fetchproductname($row[productid]);
$productCount = $row['SUM(quantity)'];
// Now query the bonus codes (you can come up with a better query probably, but this gives the idea)
$sql = "SELECT COUNT(bonus_code) bonus_count FROM dispatch d WHERE EXISTS (SELECT * FROM bonus b WHERE b.code = d.bonus_code AND b.productid = $productId)";
$bonusresult = mysql_query($sql) or die(mysql_error());
if ($bonusRow = mysql_fetch_array($bonusresult)) {
$productCount += $bonusRow['bonus_count'];
}
echo $prodname ." - ". $productCount;
echo "<br />";
}
如果我理解这个问题,您要做的就是将结果存储在关联数组中。 得到结果后:
$product_array = array();
foreach($result as $row)
{
$prodname = fetchproductname($row[productid]);
$product_array[$prodname] = $row['SUM quantity'];
}
然后以相同的方式遍历您的Bonus表,并为找到的每个奖金将一个添加到相关数组:
[...]
if(isset($product_array[$bonus_product_name]))
{
$product_array[$bonus_product_name] = $product_array[$bonus_product_name] + 1;
}
else
{
$product_array[$bonus_product_name] = 1;
}
最后,只需遍历product数组以打印出值
$keys = array_keys($product_array);
foreach($keys as $key)
{
echo("$key - $product_array[$key]");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.