在while循环

时间:2015-07-10 20:25:44

标签: php mysql

基本上,我想使用一个while循环在表中显示以下sql查询的组合输出。我有一个名为 participant_institutions 的表格,其中包含所有机构的唯一代码和名称。我还有交易表,其中每个机构可以是买方,卖方或两者(是的,机构可以为其两个客户进行交易)。在这里的好人的帮助下,我能够使用sql JOIN将交易表中的每个代码与参与机构表中的相应名称进行匹配,如查询中所示。下面的第一个查询将汇总每个公司的所有购买价值,第二个查询将对其销售做同样的事情。但是,我要显示的表格将包含while循环中每个公司的[Sum(buy_value)+ Sum(sell_value)]。我如何使用mysql或php实现此目的。 注意:交易表中有两列用于buy_firm_code和sell_firm_code。他们持有的记录是相同的,取决于公司参与的交易方面。 以下是我到目前为止所做的工作。

<?php
$con=mysqli_connect("localhost","db_user","password","database");

$total_value = 0;
$buy_value = 0;
$sell_value = 0;
$firm_name = "";
$institution_code = "";
$display = "";

// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$buy_sql="SELECT p.institution_code, p.institution, SUM(t.trade_value)
value_bought FROM trades t JOIN participating_institutions p ON     p.institution_code = t.buy_firm_code GROUP BY t.buy_firm_code ORDER BY value_bought DESC";

if ($buy_result = mysqli_query($con, $buy_sql))
{
// Fetch one and one row for buy side
while($row=mysqli_fetch_array($buy_result)) { 
    $buy_value .= $row['value_bought'].'<br>';
    $institution_code .= $row['institution_code'].'<br>'; 
    $firm_name .= $row['institution'].'<br>'; 

}

}

$sell_sql = "SELECT  p.institution_code, p.institution, SUM(t.trade_value) value_sold FROM trades t JOIN participating_institutions p ON p.institution_code = t.sell_firm_code GROUP BY t.sell_firm_code ORDER BY value_sold DESC";

if ($sell_result = mysqli_query($con, $sell_sql))
{
// Fetch one and one row for sale side
while($row=mysqli_fetch_array($sell_result)) {
    $sell_value.= $row['value_sold'].'<br>';
    $institution_code .= $row['institution_code'].'<br>'; 
    $firm_name.= $row['institution'].'<br>';

}

}
$total_value = $buy_value + $sell_value;
$display .= '<table><tr><td>'.$institution_code.'</td><td>'.$firm_name .'</td><td>'.$total_value.'</td></tr></table>';
echo $display;

// Free result set
mysqli_free_result($buy_result);
mysqli_free_result($sell_result);
mysqli_close($con);
?>

当我遇到这两个问题时:

  1. 公司重复,我猜是因为我正在运行两个查询。我是什么 想要是每个公司的一个输出记录。

  2. 我没有得到每家公司的总数,而是得到第一条记录的总买入和总销售额的总和

  3. 而不是

    Firmcode A:  FirmName A: 20,000 
    Firmcode B:  FirmName B: 40,000
    Firmcode C:  FirmName C: 50,000
    

    我明白了

    Firmcode A:  FirmName A: 
    Firmcode B:  FirmName B:    20,000
    Firmcode C:  FirmName C:
    

1 个答案:

答案 0 :(得分:0)

谢谢你们。我能够解决这个问题。我使用上面的两个查询在我的数据库中创建了两个视图。然后,我在代码中使用了第三个查询,使用SUM聚合函数将两个视图连接到我的总买入和总销售值。它现在完美运作。感谢您的所有贡献。