Отображение данных одной таблицы относительно другой таблицы

1

Изображение 174551

Я застрял в этой проблеме. У меня есть 2 таблицы, Invoice и Invoice_Lines. Я хочу, чтобы отобразить свою таблицу таким образом, что Invoice - Invoice линии должны быть отображены ниже соответствующих счетов - фактур. Вот мой код:

$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>"; 
  • 0
    Можете ли вы показать ожидаемый формат вывода?
  • 0
    Я добавил изображение настоящего вывода выше. Я хочу, чтобы эти 2 таблицы отображались в одной таблице. Пожалуйста, проверьте мой вопрос для изображения.
Показать ещё 3 комментария
Теги:
roql
rightnow-crm

3 ответа

0
Лучший ответ

Попробуйте сделать это,

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
1

Вы должны использовать JOIN-запрос здесь, чтобы построить единый набор результатов с содержимым из обеих таблиц. Такой запрос сделает трюк для вас

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.

0

У вас нет доступа к MySQL через OSvC или его API. Этот тег следует удалить из вопроса. Вопрос специфичен для OSvC (Oracle Service Cloud) и ROQL, который является спецификацией прикладного уровня, а не специфичной для базы данных.

Если у вас есть таблицы, объединенные в конструкторе объектов как родительский и дочерний, то вы должны использовать синтаксис соединения ROQL, который подробно объясняется в документах. Соединения подразумеваются внутренними объединениями при использовании ROQL, но вы также можете установить внешние соединения. Предполагая, что вы хотите получить все строки счетов для контакта 1234, а ваш объект счета-фактуры имеет отношение " Contact и отношение " Invoice_lines, тогда queryCSV будет выглядеть примерно так:

SELECT I.ID as InvoiceID, I.Invoice_lines.* FROM Invoice I WHERE I.Contact = 1234

Синтаксис Query Object (queryObject method) будет немного отличаться, поскольку вы не укажете столбцы, но я бы использовал запрос в вашем случае, поскольку вы выводите данные в табличном формате:

SELECT I, Invoice_lines FROM Invoice I WHERE I.Contact = 1234

Вы должны будете учитывать ограничение в 10 000 строк в своей логике; вам может понадобиться цикл, в котором страницы будут отображаться, если вы намереваетесь отображать более 10 тыс. строк на странице.

Кроме того, похоже, что вы объединяете представление и код контроллера в своем примере. Это плохая практика. Вы должны выполнять свои запросы с модели, возвращая результаты вашего запроса контроллеру, чтобы перейти к представлению. Представление просто перебирает массив результатов для отображения вашей таблицы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню