Ваша СУБД не является подходящим инструментом для формирования отформатированного, ориентированного на клиента счета.Однако он может передать вам всю информацию, необходимую для составления счета;остальная часть работы относится к уровню представления.
Вот SQL-запрос, который можно использовать для сбора информации, которая позволит вашему приложению сгенерировать счет.
Из связей, объявленных в вашей схеме, следует связывать таблицы sitting_table
, orderr
, orderr_menu_item
, menu_item
и employee
.Это в значительной степени объединяет все таблицы в вашей схеме, поэтому вы должны иметь возможность адаптировать ее, если требуются дополнительные столбцы.
Данные агрегируются по сидячей таблице, порядку и пункту меню со связанным количеством и вычисленным значением;Исходя из предоставленной вами информации, похоже, что это ваш ожидаемый уровень агрегации.
SELECT
st.id sitting_table_id,
o.id orderr_id,
e.name employee_name,
e.surname employee_surname,
mi.name item_name,
mi.cijena item_price,
SUM(omi.quantity) item_quantity,
SUM(omi.quantity) * mi.cijena item_value
FROM
sitting_table st
INNER JOIN orderr o ON o.sitting_table_id = st.id
INNER JOIN orderr_menu_item omi ON omi.orderr_id = o.id
INNER JOIN menu_item mi ON mi.id = omi.menu_item_id
INNER JOIN employee e ON e.oib = o.employee_oib
-- WHERE st.id = ? AND o.orderr = ?
GROUP BY
st.id,
o.id,
e.name,
e.surname,
omi.id,
mi.name,
mi.cijena
ORDER BY
st.id,
o.id,
mi.name,
mi.cijena
См. скрипту БД
Вы можетераскомментируйте предложение WHERE
, чтобы ограничить выбор заданными sitting_table
и orderr
.