Может ли то, что я ищу, не существует, два разных запроса отображаются в одном и том же запросе отчета/заголовка?

113
16

Я удивлен, что не могу найти этого, если его не существует. Я использую SQL для написания запросов в моей PMS около пяти years-, я хотел сделать что-то новое.

Невозможно ли поставить два (или более) запроса в один и тот же выходной оператор, все на один вывод?

Представьте, что я банк, у меня есть таблица SQL с информацией о клиентах, а банковский счет # является основным key---

У меня есть вторая таблица со всеми данными транзакции, первичный ключ является последовательным, один из других столбцов включает, конечно, номер учетной записи.

Не существует способа получить вывод, который представляет собой комбинацию оператора select, который дает равную проверочную инструкцию.

Он показывает ONCE в верхней части записей, которые я выбираю из таблицы сведений о клиентах. Затем он переходит к позициям. Простой запрос заголовка. затем длинный запрос данных. Затем идет перерыв страницы?

т.е. выберите customer.account, customer.firstname, customer.lastname, customer.everything из таблицы клиентов

then--

выберите transaction.number, transaction.date, transaction.type, transaction.debitamt, transaction.creditamt, transaction.whatever where transaction.account равно customer.account и даты между x & y order by transaction.number

pagebreak на customer.account

Я хочу показать вывод двух разных запросов в том же отчете, после чего хочу новую страницу для следующего клиента

действительно? не предусмотрено ли создание двух разных таблиц один за другим таким образом? они должны соответствовать контенту? (union all), поскольку мне не нужно имя клиента в каждой строке транзакции.

Я искал часы и не могу найти, что эта функциональность существует....

спросил(а) 2021-01-19T15:27:08+03:00 9 месяцев назад
1
Решение
92

SQL может использоваться для предоставления данных, необходимых для вашего отчета, например, запрос может выглядеть примерно так:

select
c.account
, c.firstname
, c.lastname
, c.all_other
, t.number
, t.date
, t.type
, t.debitamt
, t.creditamt
, t.whatever
from customer_table c
inner join transaction_table t on c.account = t.account
where c.account = 'abcd'
and t.date >= '2018-04-01' and t.date < '2018-05-01'
order by
c.account
, t.date
;

Но SQL не разработан как писатель отчетов. Он будет предоставлять результаты этого запроса с информацией REPEATED для каждого клиента в столбцах, поступающих из таблицы клиентов. Это НЕ авария или ошибка, это по дизайну и ожидаемому поведению.

Для "форматирования" вашего отчета вам нужен другой инструмент, например, вы можете использовать PHP и HTML для "форматирования" данных в "отчет". Этот дополнительный инструмент часто упоминается как "уровень представления", и хотя уровень представления может генерировать нужные данные с использованием SQL, он соответствует этому уровню для удовлетворения ваших потребностей в презентации.

ответил(а) 2021-01-19T15:27:08+03:00 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема