Php MYSQL查询生成表单,查询多个表并汇总

Php MYSQL查询生成表单,查询多个表并汇总,php,mysql,Php,Mysql,我想创建一个报告,报告echo的分类,然后是每个分类的总销售额 数据库分为4个表: 1类别表包含类别名称和id 2产品按类别id从此处选择产品 3销售人员持有与销售项目相关的销售ID 4销售项目保存所有销售项目和销售金额 我需要通过类别id获取我相信的产品,然后通过日期获取销售额,然后仅通过日期和产品id从销售项目中选择销售项目,以便它们仅通过相应的类别 这是我的尝试。。但是没有工作,我甚至不确定我是否走上了正确的道路,任何帮助都将不胜感激:谢谢 //Select The Category Ta

我想创建一个报告,报告echo的分类,然后是每个分类的总销售额

数据库分为4个表:

1类别表包含类别名称和id 2产品按类别id从此处选择产品 3销售人员持有与销售项目相关的销售ID 4销售项目保存所有销售项目和销售金额

我需要通过类别id获取我相信的产品,然后通过日期获取销售额,然后仅通过日期和产品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
}
?>
要做到这一点,您必须使用JOIN。但在使用它之前,您必须确保您的表以某种方式连接在一起

例如,表列 -表类别:类别id。。 -表销售:销售id、类别id、。。 在这种情况下,它将类似于:

SELECT * 
FROM categories as c
JOIN sales as s
ON c.cat_id=s.cat_id
要计算出现次数,请使用COUNTtable.column\u to\u在单词SELECT之后计数。

要执行此操作,必须使用JOIN。但在使用它之前,您必须确保您的表以某种方式连接在一起

例如,表列 -表类别:类别id。。 -表销售:销售id、类别id、。。 在这种情况下,它将类似于:

SELECT * 
FROM categories as c
JOIN sales as s
ON c.cat_id=s.cat_id

要计算出现次数,请在单词SELECT之后使用COUNTtable.column\u to\u count。

我确信这不是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

我相信这不是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
你需要学习如何使用SY你需要学习如何使用s