使用PHP从两个MYSQL表中提取信息

时间:2014-02-19 17:35:26

标签: php mysql

创建轻量级预算应用。我有一个数据库,两个表。

交易 - 日期,金额,供应商,category_id(单个数字) 类别 - 身份证,姓名,限额(每次可以花多少钱)

我目前正在使用下面的PHP打印按类别分组的所有交易金额的总和。我想要做的是显示每个分组的总数,但也显示相应的“名称”和“限制”。我也想写数学,所以从“限制”中减去每个“value_sum”,并显示差异。

示例:

杂货 - 花费:-12.00限制:200.00左:188.00
租金 - 租金:-3.00限额:200.00左:188.00
外出就餐 - 花费:-9.00限制:200.00左:188.00
公用事业 - 花费:-45.00限制:200.00左:188.00

<?php

$result = mysql_query("SELECT SUM(amount) AS value_sum FROM TRANSACTIONS group by category") 
or die(mysql_error());  

$number = value_sum;

while($row = mysql_fetch_array( $result )) {

    echo "<div class='col1'>"; 
    echo round ($row['value_sum'], 2);
    echo "</div>"; 
} 


?>

2 个答案:

答案 0 :(得分:0)

未经测试,但我猜一个简单的连接可以解决这个问题:

SELECT SUM(`t1`.`amount`) AS `value_sum`, `t2`.`name`, `t2`.`limit`
FROM `transactions` AS `t1`
JOIN `categories` AS `t2`
    ON `t1`.`category_id` = `t2`.`category`
GROUP BY `category`;

答案 1 :(得分:0)

您可以使用以下内容:

   SELECT 
    (select cat.name from CATEGORIES where cat.id = tran.category_id limit 1) as Categorie,
    SUM(tran.amount) as Spent,
    (select cat.limite from CATEGORIES where cat.id = tran.category_id limit 1) as Limite,
    (select cat.limite from CATEGORIES  
      where cat.id = tran.category_id limit 1)-(SUM(tran.amount)) AS Lefted 
    FROM TRANSACTIONS tran
    group by tran.category_id;

我将limit var更改为limite,因为它是mysql的保留字;我也像表格描述一样使用category_id。