2017-05-23 68 views
0

三个表的联合计算平均我有三个数据库表简单的方式通过使用MySQL和PHP

 Graduate_survey 
     g_id(pk)AI PO PO1 PO2 Program_name year1 year2 

     Alumni_survey 
     a_id(pk)AI PO PO1 PO2 Program_name year1 year2 

     faculty_survey 
     f_id(pk)AI PO PO1 PO2 Program_name year1 year2 

插入值插入这些表后,我需要计算平均值和存储在另一个表中的平均值total_survey

total_survey 
    t_id(pk)AI PO PO1 PO2 Program_name year1 year2 

使用$_session插入Program_name,year1,year2。 如何使用MySQL查询计算平均值并将新值存储在使用php的另一个表中?我的代码在下面给出,但它不起作用。

   <?php 
      @include("connection.php"); 
      error_reporting(0); 
      $program=$_POST['Program_name']; 
      $year1=$_POST["year1"]; 
      $year2=$_POST["year2"]; 
      $po=$_POST["total_PO"]; 
      $po1=$_POST["total_PO1"]; 
      $po2=$_POST["total_PO2"]; 
      $_SESSION['SProgram_name']=$program; 
      $_SESSION['Syear1']=$year1; 
      $_SESSION['Syear2']=$year2; 
      if($_POST['submit']) 
      { 
       $sql= "SELECT AVG(t.PO) AS total_PO, AVG(t.PO1) AS 
       total_PO1, AVG(t.PO2) AS total_PO2 
       FROM (SELECT PO,PO1,PO2 
       FROM Graduate_survey 
       UNION ALL 
       SELECT PO,PO1,PO2 
       FROM alumni_survey 
       UNION ALL 
       SELECT PO,PO1,PO2 
       FROM faculty_survey 
      )*t"; 
      $rData=mysql_query($sql); 
      $res=mysql_fetch_array($rData); 

       $sql="select * from total_survey"; 
      $rData=mysql_query($sql); 
      $res=mysql_fetch_array($rData); 
      $sql="insert into total_survey 
      values('','$po','$po1','$po2','$program','$year1','$year2')"; 
      mysql_query($sql); 

      } 
      ?> 
      <form method="post"> 
      <p align="center"><input type="submit" name="submit" value="Click 
      here to calculate the final indirect assesment"> 
      </form> 

假设在graduate_survey表中的PO列包含70,PO1含有60和PO2含有80。在alumni_survey PO列包含60,PO1含有70和PO2包含90.In的faculty_survey PO列包含90,PO1包含80并且PO2包含60.我需要的是所有三个表格组通过ID联合的平均值(PO + PO + PO),平均值(PO1 + PO1 + PO1),平均值(PO2 + PO2 + PO2)

+0

你想插入什么?均值的平均值?这并没有多少意义诚实 –

+0

avg,avg1,avg2这些是列名....研究生调查,alumni_survey和faculty_survey是一些调查表格,其中一些平均计算完成,并必须将其存储在数据库中...现在我需要总结这些数据库的列并对其进行平均......例如在Graduate_survey avg中,avg1,avg2包含一些numarical值,在Alumni_survey和faculty_survey中包含相同的值。现在我需要的是avg(graduate_survey)+ avg(alumni_survey)+ avg(faculty_survey)/ 3的平均值......在avg1和avg2的情况下相同......并且平均值将不得不存储在另一个表中。 –

回答

1

您需要在UNION就做平均,并将其包装成INSERT查询,如:

INSERT INTO total_survey (PO, PO1, PO2) 
SELECT AVG(PO), AVG(PO1), AVG(PO2) 
FROM (
SELECT PO, PO1, PO2 FROM graduate_survey 

UNION 

SELECT PO, PO1, PO2 FROM Alumni_survey 

UNION 

SELECT PO, PO1, PO2 FROM faculty_survey 
) a; 
+0

我编辑了代码... –

+0

我必须用php代码来做....首先,我必须计算平均值,然后插入新的平均值....我的代码不工作...它显示该数据插入,但所有零值,这意味着平均计算查询不工作.. –

+0

你把它错了...这不是平均数....让我告诉你简要....假设 –