【问题标题】:How to join 2 tables and display data in for loop in php?如何在php的for循环中加入2个表并显示数据?
【发布时间】:2018-01-08 08:54:03
【问题描述】:

我有两张桌子invoice_ininvoice_out。 在两个表中,我分别有datetrad_idnetvattotal 的列。 我正在为两张桌子分享我的图片。

我关心的是以表格格式显示月份数据。如果我想要来自两个表格的数据,那么如何为此编写 for 循环。在我当前的代码中,我只从一个表中获取数据。所以它以正确的方式出现。

SELECT SUM(total) FROM invoice_out GROUP BY YEAR(date), MONTH(date)。 这是我当前的查询,仅显示一个表中的数据。

下面是我的功能:

public function get_all_data_for_vat($table)
{                
    $table = self::get_table_name($table);
    $con = $this->__construct();
    $sql="SELECT SUM(total) FROM invoice_out GROUP BY YEAR(date), MONTH(date)";
    $execute = mysqli_query($con, $sql);
    $rows = mysqli_num_rows($execute);
    $data=mysqli_fetch_all($execute);
    return $data;
}

$data1=$obj->get_all_data_for_vat('invoice_out',$_SESSION['trade_id']); 



<tbody>                                                                    
    <?php for($i=0;$i<count($data2);$i++){                         
     ?>
        <tr class="gradeA">
            <td><?php echo $data2[$i][1];?></td>
            <td><?php echo 'Monthly';?></td>
            <td><?php echo $data2[$i][4];?></td>
            <td class="center"><?php echo $data2[$i][5];?></td>
            <td class="center"><?php echo $data2[$i][6];?></td>
            <?php if($_SESSION['roll']!=1){?>
                <td class="center bg_ls"><a href="add_VAT.php?id=<?php echo $data[$i][0];?>" onclick="randomid();" style="color:white;">Edit</a></td>
                <script type="text/javascript">
                    function randomid(){
                        $.ajax({
                            type: "POST",
                            url: 'add_paye.php',
                            data: ({id:"test123<?php //echo $obj->encrypt($data[0]);?>"}),
                            success: function(data) {
                                //alert(data);
                            }
                        });
                    }
                </script>
            <?php }?>   
        </tr>
    <?php }?>
</tbody>

在 for 循环中,我可以从一张表中显示我的数据。它对我有用。 但我也想从invoice_in 表中显示total。为此,我正在编写这个不起作用的查询。

SELECT io.trad_id , io.date , io.billing_com, 
        io.total, in.trad_id, in.date, in.billing_com, in.total 
FROM invoice_out io
INNER JOIN invoice_in in
    ON invoice_in.trad_id = invoice_out.trad_id

我的第一张图片显示了 invoice_in 表中的数据。 我的第二张图片显示了 invoice_out 表中的数据。

【问题讨论】:

  • 您能以文本形式向我们展示您的实际预期输出吗?请删除图片并替换为文字。
  • 在您的连接查询中,您的 invoice_in 表别名 inreserved word。尝试使用不同的别名,看看是否能解决您的问题。
  • 您将 2 个参数传递给只有一个参数的方法。这怎么不会产生至少一个错误??
  • $con = $this-&gt;__construct(); ???为什么 ???显然,花几分钟的时间学习 PHP 或任何 OO 手册/教程是值得的

标签: php mysql for-loop


【解决方案1】:
SELECT io.trad_id , io.date , io.billing_com,
io.total, invoice.trad_id, invoice.date, invoice.billing_com, invoice.total 
FROM invoice_out io
LEFT JOIN invoice_in invoice
ON invoice_in.trad_id = invoice_out.trad_id

【讨论】:

  • 您能解释一下这是如何解决 OPs 问题的吗?你做了什么改变,为什么?
  • OP 为什么要试试这个好的答案将始终解释所做的事情以及这样做的原因,不仅适用于 OP,而且适用于可能会发现此问题并正在阅读您的答案的 SO 的未来访问者。跨度>
  • 他使用保留字作为别名,所以它给了他一个错误
猜你喜欢
  • 2023-04-07
  • 2012-09-02
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 2020-04-01
  • 2013-11-18
  • 1970-01-01
  • 2019-07-08
相关资源
最近更新 更多