0

假设我有 3 个表:Standard_Code 和 Report and Transactions。

Standard_Code表字段名称:代码

     值为:Opening_Balance、Ending_Balance、Actual_Remaining_Balance

报告表字段名称:Opening_Balance、Ending_Balance、Actual_Remaining_Balance

你可能会想我为什么要做这种重复?好吧,从技术上讲,它们是不同的,因为“Standard_Code”表具有行值,但在我的“报告”中它们是列,它们是固定的,无法更改。

$sql = "Select t.code, t.amount From Transactions t Inner Join Standard_Code sc on t.code = sc.code";

$result = mysql_query($sql);

而($row = mysql_fetch_assoc($result)) {

    foreach ($row as $col => $val) {
        echo $col." = ".$val."<br />";        
}

sqlQuery = "更新报告集'" . 字段名。"' = " 。价值

}

假设,在 while 或 foreach 循环期间如何执行此查询以更新 Report 表:

fieldnameCode来自 Standard_Code 表的值(这里的值是 Report 表的实际字段名称)

价值:来自交易表:Amount

我不知道如何根据我的要求工作。

我的理由:我有特殊的要求来处理报告,特别是在值放置/格式等方面。简而言之,报告很复杂,这就是我创建自定义报告表的原因,这样我就可以轻松地将报告数据格式化。

4

2 回答 2

1
$sql = "Select t.code, t.amount From Transactions t Inner Join Standard_Code sc on t.code = sc.code";

$result = mysql_query($sql);
$q = array();

while($row = mysql_fetch_assoc($result)) {
  $q[] = $row['code'].' = '.$row['amount'];    
}
// UPDATE report SET Opening_Balance = 2, Ending_Balance = 2, Actual_Remaining_Balance = 2
mysql_query('UPDATE Report SET '.join(', ', $q));
于 2013-02-20T08:13:13.973 回答
0

code好吧,我了解您的情况,因为您想在循环交易时更新每种类型的总和。这是我的代码(我们不应该再使用mysql_api,我使用PDO代替)

$db = new PDO('mysql:host=localhost;dbname=testdb;charset=UTF-8', 'username', 'password');

$stmt = $db->prepare("Select t.code, t.amount From Transactions t Inner Join Standard_Code sc on t.code = sc.code");
if ($stmt->exectute())
{
    $rows = $stmt->fetchAll();
    foreach($rows as $row)
    {
        $stmt = "Update Report Set `" . $row['code'] . "` = `" . $row['code'] . "` + :val";   
        $stmt->bindValue(":val", $row['amount']);
        $stmt->execute();
    }
}

在这种情况下,您的report表格将只有一行。您还可以修改此代码以插入新行而不是更新旧记录。但是,如果使用这种方法,您需要一个额外的主键列。

于 2013-02-20T11:20:17.993 回答