2017-05-23 43 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

你把它錯了...這不是平均數....讓我告訴你簡要....假設 –