MySql得到总和:一个表包含值,在其他表中是其余数据

时间:2015-05-12 10:26:10

标签: php mysql

我有三张桌子。

  • 第一个表(项)具有:item_id,item_name和item_value。

  • 第二张表(讲义)包含:handout_id,handout_item_id,month, vol_id,receiver_name。

  • 第三表(志愿者)包含volunteer_id,volunteer_name

我需要每个志愿者输出所选月份的每月项目总和值。 这是我到目前为止(我坚持:-s):

    function mesec_svi(){
global $konekcija;
$mes=$_GET['mes'];

$query= "SELECT DISTINCT vol_id FROM handouts WHERE mes = {$mes} ";
$mesec_svi = mysqli_query($konekcija, $query);
 potvrda_query($mesec_svi);

 while($mesec_svi_lista=mysqli_fetch_assoc($mesec_svi)){

 $volid= $mesec_svi_lista["vol_id"];     

 echo $volid.' ';   

 $query1= "SELECT handout_item_id FROM handouts WHERE vol_id =  {$volid}     AND  mes = {$mes}";     
   $mesec_svi_o = mysqli_query($konekcija, $query1);
    potvrda_query($mesec_svi_o);
 while($mesec_svi_olista=mysqli_fetch_assoc($mesec_svi_o)){
  $itemid= $mesec_svi_olista["handout_item_id"];

 $query2= "SELECT item_value FROM items WHERE itemid = {$itemid}";

  $pr_svi_o = mysqli_query($konekcija, $query2);
    potvrda_query($pr_svi_o);



while($pr_svi_olista=mysqli_fetch_assoc($pr_svi_o)){
        $pr= $pr_svi_olista["item_value"];
        echo '</br>'.$pr.'</br>';} 

 }

     }
 }

这显示结果:

1 
200
100
50
2
50
50
100

其中1和2是志愿者ID,其他数字是项目值。我需要总结这些价值。

1
350
2
200

我尝试了sum()和array_sum,但没有运气。

1 个答案:

答案 0 :(得分:0)

尝试使用INNER JOIN。查询将是 -

SELECT sum(item_value) as sum_item FROM handouts 
INNER JOIN items ON items.itemid = handouts.handout_item_id
WHERE vol_id = {$volid} AND  mes = {$mes} GROUP BY items.itemid

循环通过它 -

while($mesec_svi_olista=mysqli_fetch_assoc($mesec_svi_o)){
    echo $mesec_svi_olista['sum_item'].'<br>';
}