简单的餐厅模式
带有插入和订单事务的PostgreSQL https://hastebin.com/cobuquzobo.sql
sitting_table
上的每位客人是一张新桌子
同一sitting_table
上的每个订单将是一个新的orderr
sitting_table_id
,orderr
id
(与输入的sitting_table_id
一起最多orderr_menu_item
...
(使用psycopg2 / python,在linux cmd中打印)
例如,我想打印一张账单,我想将它们存储起来...
现在在这里,我有点迷茫,真的不知道该做什么或应该做什么
帐单数据如下:
bill nr23
order2
cola × 2 15.50 31.00
pizza × 2 50.00 100.00
order3
squid × 3 50.00 150.00
total price ..
谢谢!
答案 0 :(得分:1)
您的RDBMS不是生成格式化的,面向客户的账单的正确工具。但是,它可以为您提供生成账单所需的所有信息;其余工作属于表示层。
这是一个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
。