php - MYSQL Query-Building Form With Queries-多表汇总

标签 php mysql

我想创建一个报告来回显类别,然后是每个类别的总销售额

数据库分为 4 个表:

1)类别表(保存类别名称和id)
2)产品(通过类别id从这里选择产品)
3) 销售(持有与销售项目相关的销售 ID)
4) 促销品(包含所有促销品销售量)

我需要通过category id获取我认为的产品,然后通过date获取销售额,然后从sale items中选择按 sale id(仅按日期)和按 product id(因此它们仅按相应类别)。

这是我的尝试..但没有成功,我不确定我是否走在正确的道路上,我们将不胜感激 :) 谢谢!

//Select The Category Table
$query="SELECT * FROM categories";
$result=mysql_query($query);
$num=mysql_numrows($result); 

while($row = mysql_fetch_assoc($result))
{
   echo $row['name']." ";

   //store category id in a string
   $cID = $row['id']."";

   //get the product id's
   $productquery = "SELECT id FROM products WHERE category_id = $cID";
   $productresult = mysql_query($productquery);
   $numproducts = mysql_num_rows($productresult);
   $productrow = mysql_fetch_assoc($productresult);
   $productid = $productrow['id']."";
 //  echo $productid;


   //get sale id from table to use to get sale items
   $salesquery = "SELECT * FROM sales WHERE date BETWEEN '2015-01-01 00:00:00' AND '2015-06-01 00:00:00'";
   $salesresult = mysql_query($salesquery);
   $salesnumber = mysql_num_rows($salesresult);
   $salesrow = mysql_fetch_assoc($salesresult);
   $salesid = $salesrow['id']."";
  // echo $salesid;

  //put it all together and try to sum up the subtotal col where only the category product will be tallied
  $saleitemsquery = "SELECT SUM(subtotal) FROM sales_items WHERE sale_id = $salesid AND product_id = $productid";
  $totalresult = mysql_query($saleitemsquery);
 // $totalrow = mysql_fetch_assoc($totalresult);
 echo $totalresult;

   ?>
   <br /> <br />

   <?php
}
?>

最佳答案

我敢肯定这不是 100% 准确,但希望它足以让您走上正确的轨道。

select c.name as Name, sum(i.subtotal) as Total
from sale_items i
       inner join sales s on s.id = i.sale_id
       inner join products p on p.id = i.product_id
       inner join categories c on c.id = p.category_id
where s.date BETWEEN '2015-01-01 00:00:00' AND '2015-06-01 00:00:00'
group by c.id

关于php - MYSQL Query-Building Form With Queries-多表汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31187043/

相关文章:

multithreading - 使用PHP CLI SAPI的基于PHP的服务器

mysql - 找不到在不降低性能的情况下将 2 个 SQL 查询减少到 1 个的方法

mysql - 从多个表名中选择 *

android - 使用android从mysql检查值

mysql - 如何从学校日期列表中查找累计缺勤日期

php - 有什么方法可以绕过 php open_basedir 的符号链接(symbolic link)吗?

php - 我需要修复 mysql 查询以在 HTML 页面中显示一些内容

PHP - 如何在大量文件中替换字符串?

php - 如何让用户像 Facebook 一样上传多张图片?

mysql - 合并两个具有相似列名的 SQL 表