youssefabohaty / openbravoposru

Automatically exported from code.google.com/p/openbravoposru
0 stars 0 forks source link

Несколько запросов в одном отчёте (перекрёстный отчёт) #61

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Как быть если необходимо выполнить 
несколько запросов в одном отчете?

Например:
**********************
получаем сумму по кухни
SELECT
     people.name AS people_name,
     sum(ticketlines.units * ticketlines.price)
FROM
     tickets INNER JOIN ticketlines ON tickets.id = ticketlines.ticket
     INNER JOIN products ON ticketlines.product = products.id
     INNER JOIN people ON tickets.person = people.id
     INNER JOIN receipts ON tickets.id = receipts.id
WHERE
    products.code LIKE ('2%')
    group by people.name
    order by people.name
**********************
получаем сумму по бару
SELECT
     people.name AS people_name,
     sum(ticketlines.units * ticketlines.price)
FROM
     tickets INNER JOIN ticketlines ON tickets.id = ticketlines.ticket
     INNER JOIN products ON ticketlines.product = products.id
     INNER JOIN people ON tickets.person = people.id
     INNER JOIN receipts ON tickets.id = receipts.id
WHERE
    products.code LIKE ('1%')
    group by people.name
    order by people.name
**********************

В данный момент сделал два отчета кухня и 
бар. 
Примерно такой вид:
***********
*USER | SUM
*==========

Хотелось бы объединить и получить такой вид
***************************************
*USER | Сумма по бару | Сумма по кухне|
*     |               |               |

Проблема в организации запроса к БД.

Original issue reported on code.google.com by 646...@gmail.com on 6 May 2010 at 1:22

GoogleCodeExporter commented 9 years ago
Как я вижу сделать это можно в iReport 
используя элемент Crosstab в нём можно будет
указать перекрёстную выборку по двум этим 
критериям.

Original comment by svinin...@gmail.com on 7 May 2010 at 8:34

GoogleCodeExporter commented 9 years ago
Если возможно, можете немного уточнить.
Заранее благодарен.

Original comment by 646...@gmail.com on 7 May 2010 at 8:50

GoogleCodeExporter commented 9 years ago
Вот простейший пример такой формы отчёта 
сделанный для БД Openbravo POS, но для
использования в iReport посмотрите как 
работает в нём, интеграцию в Openbravo POS
могу сделать, но только позже.

Original comment by svinin...@gmail.com on 7 May 2010 at 10:04

Attachments:

GoogleCodeExporter commented 9 years ago
Будьте внимательны приведённый выше 
пример не для Вашего запроса, а для запроса 
по
пользователям и хостам. Как лучше сделать в 
Вашем случае когда выборка принадлежности
к бару или кухне ведётся по коду товара 
пока не знаю.

Original comment by svinin...@gmail.com on 7 May 2010 at 10:09

GoogleCodeExporter commented 9 years ago
Если я всё правильно понял ниже привожу 
пример для решения Вашей задачи. В нём
используется запрос вида:

SELECT
     PEOPLE.NAME AS PEOPLE_NAME,
     SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS SUM,
     PRODUCTS.CODE AS CODE,
     PRODUCTS.NAME AS PROD_NAME
FROM
     TICKETS INNER JOIN TICKETLINES ON TICKETS.ID = TICKETLINES.TICKET
     INNER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID
     INNER JOIN PEOPLE ON TICKETS.PERSON = PEOPLE.ID
     INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID
GROUP BY PRODUCTS.CODE, PEOPLE.NAME
ORDER BY PRODUCTS.CODE, PEOPLE.NAME

И вводится новая переменная PLACE 
рассчитываемая по формуле:

new String($F{CODE}.substring(0,1).equals("1") ? "Bar" :
$F{CODE}.substring(0,1).equals("2") ? "Kitchen" : "none")

По PEOPLE_NAME и PLACE строится перекрёстная 
таблица с суммами продаж пользователей
по местам продажи. При этом если штрих-код 
товара начинается на 1, то товар из бара;
если на 2, то товар из кухни; в остальных 
случаях он неизвестно откуда. 

Попробуйте в iReport, интеграцию в Openbravo POS я не 
делал.

Original comment by svinin...@gmail.com on 7 May 2010 at 11:39

Attachments:

GoogleCodeExporter commented 9 years ago

Original comment by svinin...@gmail.com on 18 Apr 2011 at 5:44