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

введите описание изображения здесь

Я застрял с этой проблемой. У меня есть 2 таблицы, Invoice а также Invoice_Lines, Я хочу отобразить свой стол таким образом, чтобы 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>";

1

Решение

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

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

Другие решения

Вам необходимо использовать запрос 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.

1

Вы не имеете никакого отношения к 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

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

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

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

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

0
По вопросам рекламы [email protected]