首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示一个与另一个表相关的表数据

显示一个与另一个表相关的表数据
EN

Stack Overflow用户
提问于 2015-11-04 10:58:32
回答 3查看 909关注 0票数 1

我被这个问题困住了。我有两张桌子,InvoiceInvoice_Lines。我想以这样的方式显示我的桌子,Invoice线应该显示在它们各自的发票下面。这是我的代码:

代码语言:javascript
复制
$queryString = "SELECT * FROM Invoice";
        $roql_result_set = RightNow\Connect\v1_2\ROQL::query($queryString);

        echo "<table class=\"responstable\"><tr><th>ID</th><th>Account</th><th>Contact</th><th>Display Order</th><th>Date Created</th><th>Date Updated</th></tr>"; 
        while($roql_result = $roql_result_set->next())
        {
            while ($row = $roql_result->next())
            {   
                $lines = "SELECT * FROM Invoice_lines";
                $result_set = RightNow\Connect\v1_2\ROQL::query($lines);
                while($result = $result_set->next())
                {
                    while ($line = $result->next())
                    {                       
                        echo "<tr><td><a href=\"#\">" . $line['ID'] ."</a></td><td><a href=\"#\">" . $line['Invoice'] . "</a></td><td>" . $line['Line_Number'] ."</td><td>" . $line['DisplayOrder'] . "</td></tr>"; 

                        $ctime = date('F j, Y' , strtotime($row['CreatedTime']));
                        $utime = date('F j, Y' , strtotime($row['UpdatedTime']));

                        echo "<tr><td><a href=\"#\">" . $row['ID'] ."</a></td><td><a href=\"#\">" . $row['Account'] . "</a></td><td>" . $row['Contact'] ."</td><td>" . $row['DisplayOrder'] ."</td><td>" . $ctime ."</td><td>" .$utime. "</td></tr>";  
                    }
                }

            }
        }
        echo "</table>"; 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-26 08:33:53

试试看,

代码语言:javascript
复制
SELECT Invoice.*, Invoice_lines.* 
  FROM Invoice
  LEFT JOIN Invoice_lines ON Invoice.ID = Invoice_lines.Invoice
   ORDER BY Invoice.Display_order, Invoice_lines.Display_order
票数 0
EN

Stack Overflow用户

发布于 2015-11-04 12:22:30

您需要在这里使用一个联接查询来构造一个包含两个表的内容的结果集。像这样的查询会为您带来好处。

代码语言:javascript
复制
SELECT Invoice.*, Invoice_lines.* 
  FROM Invoice
  LEFT JOIN Invoice_lines ON Invoice.ID = Invoice_lines.Invoice
   ORDER BY Invoice.Display_order, Invoice_lines.Display_order

但是,请不要将此查询视为魔法咒语。相反,学习如何使用SQL的这一核心特性。

票数 1
EN

Stack Overflow用户

发布于 2015-11-04 17:33:27

您没有通过MySQL或其API接触到任何OSvC。这个标签应该从问题中删除。这个问题是针对OSvC (Oracle )和ROQL的,它们是应用层的规范,而不是特定于数据库的。

如果将表作为父级和子级通过对象设计器中的关系连接起来,那么将使用ROQL语法,即在文档中详细解释。在使用ROQL时,联接是隐含的内部联接,但也可以设置外部联接。假设您想要获得联系人1234的所有发票行,并且您的发票对象有一个Contact关系和一个名为Invoice_lines的关系,那么queryCSV应该如下所示:

代码语言:javascript
复制
SELECT I.ID as InvoiceID, I.Invoice_lines.* FROM Invoice I WHERE I.Contact = 1234

查询对象(queryObject方法)语法略有不同,因为您没有指定列,但在您的情况下,我将使用查询,因为您是以表格格式输出数据:

代码语言:javascript
复制
SELECT I, Invoice_lines FROM Invoice I WHERE I.Contact = 1234

您需要考虑逻辑中的10,000行限制;如果要在一页上显示超过10k行,则可能需要一个遍历结果的循环。

而且,在您的示例中,看起来您正在合并视图和控制器代码。这是个糟糕的做法。您应该从模型执行查询,将查询结果返回给控制器以传递给视图。视图将简单地遍历结果数组以显示表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33520075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档