从三个表如何SUM,Sum of Total

时间:2013-11-04 01:27:35

标签: php mysql

对不起,我想重复一下这个问题,因为我觉得你不清楚,我这样做很难得到我想要的东西。

我想从单个查询中得到三个表格的总和,这是我的表格!!

1:付款

id | school_fee | trans_fee
1    20000        3000
2    10000        2000

The total is 35000

,代码在这里

 <?php



             //mysql_connect


if (isset($_GET['query'])) 
          {    
                 $query=$_GET['query'];

      // Instructions if $_POST['value'] exist    
      }  

                  // gets value sent over search form

                    $min_length = 3;
          // you can set minimum length of the query if you want

        if(strlen($query) >= $min_length){ // if query length is more or equal minimum 
                  length         then

    $query = htmlspecialchars($query); 
    // changes characters used in html to their equivalents, for example: < to &gt;

    $query = mysql_real_escape_string($query);
    // makes sure nobody uses SQL injection

    $raw_results = mysql_query("SELECT SUM(school_fee+trans_fee) As Total   
            FROM payment WHERE (`class` LIKE '%".$query."%')") or die(mysql_error());



               // * means that it selects all fields, you can also write: `id`,  
                   `title`, `text`
             // articles is the name of our table

            // '%$query%' is what we're looking for, % means anything, for example  
            if    
                         $query  
              is Hello
    // it will match "hello", "Hello man", "gogohello", if you want exact match use  
              `title`='$query'
    // or if you want to match just full word so "gogohello" is out use '% $query %'  
            ...OR ... '$query %' ... OR ... '% $query'


    if(mysql_num_rows($raw_results) > 0){

      // if one or more rows are returned do following

        while($results = mysql_fetch_array($raw_results)){
         while($results2 = mysql_fetch_array($raw_results2)){

        // 
       $results = mysql_fetch_array($raw_results) puts data from database into  
     array, while it's valid it does the loop


            // posts results gotten from database(title and text) you can also show    
            id ($results['id'])
        }{



            echo " &nbsp;Total amount of money payed by&nbsp;"       
        .$results['class'] ."&nbsp;"."class is&nbsp;" . $results ['Total'] .  
          "&nbsp;/=Tshs";



               echo"<br>";  echo"<br>"; 
           }



          }
            }
             }

     ?> 

2:payment_one

     id | school_fee | trans_fee
     1    10000        20000
     2    30000        50000

     The Total is 110000

除表的名称外,CODE与第一个表相同  这里是代码

 <?php



             //mysql_connect


if (isset($_GET['query'])) 
          {    
                 $query=$_GET['query'];

      // Instructions if $_POST['value'] exist    
      }  

                  // gets value sent over search form

                    $min_length = 3;
          // you can set minimum length of the query if you want

        if(strlen($query) >= $min_length){ // if query length is more or equal minimum 
                  length         then

    $query = htmlspecialchars($query); 
    // changes characters used in html to their equivalents, for example: < to &gt;

    $query = mysql_real_escape_string($query);
    // makes sure nobody uses SQL injection

    $raw_results = mysql_query("SELECT SUM(school_fee+trans_fee) As Total   
            FROM payment_one WHERE (`class` LIKE '%".$query."%')") or die(mysql_error());



               // * means that it selects all fields, you can also write: `id`,  
                   `title`, `text`
             // articles is the name of our table

            // '%$query%' is what we're looking for, % means anything, for example  
            if    
                         $query  
              is Hello
    // it will match "hello", "Hello man", "gogohello", if you want exact match use  
              `title`='$query'
    // or if you want to match just full word so "gogohello" is out use '% $query %'  
            ...OR ... '$query %' ... OR ... '% $query'


    if(mysql_num_rows($raw_results) > 0){

      // if one or more rows are returned do following

        while($results = mysql_fetch_array($raw_results)){
         while($results2 = mysql_fetch_array($raw_results2)){

        // 
       $results = mysql_fetch_array($raw_results) puts data from database into  
     array, while it's valid it does the loop


            // posts results gotten from database(title and text) you can also show    
            id ($results['id'])
        }{



            echo " &nbsp;Total amount of money payed by&nbsp;"       
        .$results['class'] ."&nbsp;"."class is&nbsp;" . $results ['Total'] .  
          "&nbsp;/=Tshs";



               echo"<br>";  echo"<br>"; 
           }



          }
            }
             }

     ?> 

最后一个是

3:payment_two

    id | school_fee | trans_fee
    1    10000        20000
    2    30000        10000

    The Total is 70000

代码如下

<?php



             //mysql_connect


if (isset($_GET['query'])) 
          {    
                 $query=$_GET['query'];

      // Instructions if $_POST['value'] exist    
      }  

                  // gets value sent over search form

                    $min_length = 3;
          // you can set minimum length of the query if you want

        if(strlen($query) >= $min_length){ // if query length is more or equal minimum 
                  length         then

    $query = htmlspecialchars($query); 
    // changes characters used in html to their equivalents, for example: < to &gt;

    $query = mysql_real_escape_string($query);
    // makes sure nobody uses SQL injection

    $raw_results = mysql_query("SELECT SUM(school_fee+trans_fee) As Total   
            FROM payment_two WHERE (`class` LIKE '%".$query."%')") or die(mysql_error());



               // * means that it selects all fields, you can also write: `id`,  
                   `title`, `text`
             // articles is the name of our table

            // '%$query%' is what we're looking for, % means anything, for example  
            if    
                         $query  
              is Hello
    // it will match "hello", "Hello man", "gogohello", if you want exact match use  
              `title`='$query'
    // or if you want to match just full word so "gogohello" is out use '% $query %'  
            ...OR ... '$query %' ... OR ... '% $query'


    if(mysql_num_rows($raw_results) > 0){

      // if one or more rows are returned do following

        while($results = mysql_fetch_array($raw_results)){
         while($results2 = mysql_fetch_array($raw_results2)){

        // 
       $results = mysql_fetch_array($raw_results) puts data from database into  
     array, while it's valid it does the loop


            // posts results gotten from database(title and text) you can also show    
            id ($results['id'])
        }{



            echo " &nbsp;Total amount of money payed by&nbsp;"       
        .$results['class'] ."&nbsp;"."class is&nbsp;" . $results ['Total'] .  
          "&nbsp;/=Tshs";



               echo"<br>";  echo"<br>"; 
           }



          }
            }
             }

     ?> 

所以我想通过php进行查询,这样我就可以获得215000作为这三个表的总计, 我需要帮助。 注意:id是自动增量。

1 个答案:

答案 0 :(得分:2)

你可以用UNION做到这一点:

SELECT SUM(total) FROM 
(
  SELECT SUM(school_fee+trans_fee) As Total   
            FROM payment
  UNION 
  SELECT SUM(school_fee+trans_fee) As Total   
            FROM payment_one
  UNION
  SELECT SUM(school_fee+trans_fee) As Total   
            FROM payment_two
 ) a

sqlfiddle demo