Я хотел бы заранее поблагодарить за любую помощь.
Моя проблема связана с двумя таблицами в MySQL (теперь переключается на postgresql ) .Таблицы связаны с базой данных билетов.
a) booking. It has four columns ccode,date,time,amount
b) account It has three columns ccode,date,amount
В таблице бронирования есть заказы билетов, а в таблице счетов - авансы и полученные платежи.
Я должен подготовитьвыписка по счету на основе ccode (код клиента).
В выписке указаны следующие столбцы:
*Ccode Type Date time amount balance*
- the report in sorted on ccode and then on date (account table row appears first)
- Type column displays B or A depending on record type
- Time column is present only in booking table
- Report has a running balance for each row
- At the end for a customercode, the totals of amount and balance is displayed
Я добился успеха в создании соединения, так какниже.(и после обсуждения ниже, удалось сгенерировать столбец TYPE, используя IF)
SELECT booking.cname, booking.bdate, booking.btime, booking.rate, booking.ID,
IF(booking.btime IS NOT NULL, "B", "A") AS type, account.cname, account.date,
account.amount, account.ID
FROM booking
LEFT JOIN account ON booking.bdate = account.date AND booking.cname=account.cname AND
booking.rate = account.amount
UNION
SELECT booking.cname, booking.bdate, booking.btime, booking.rate, booking.ID,
IF(booking.btime IS NOT NULL, "B", "A") AS type, account.cname, account.date,
account.amount, account.ID
FROM booking
RIGHT JOIN account ON booking.bdate = account.date AND booking.cname=account.cname AND
booking.rate = account.amount
Отображает все записи.Отчет может быть создан с использованием этой таблицы.
Но есть ли способ отобразить отформатированный отчет только с помощью SQL. Я могу изменить порядок столбцов и даже добавлять или удалять существующие, если известен тип записи и для каждой записи отображается текущий баланс.
ОБРАЗЕЦ ОТЧЕТА ---- ОТЧЕТ A
CODE DATE TYPE AMOUNT BALANCE TIME
A1 02/19/2011 A 50 50
A1 02/20/2011 B 35 15 1230
A1 02/21/2011 A 40 55
A1 02/21/2011 B 20 35 1830
optional > TOTAL Account = 90 Booking = 55 Balance = 35
ОБРАЗЕЦ ОТЧЕТА ---- ОТЧЕТ B
CODE AMOUNT BOOKED AMOUNT PAID BALANCE
A1 50 50 0
A1 35 15 20
A1 40 55 -15
A1 20 35 -15
this is a weekly statement version of REPORT A.
the reason is i can add where and between to get only records in a given week.
and since it is a weekly report, running balance is just omitted.
It is report grouped for all entries with customercode A1 present
in booking and account tables.
thanx