如何从多个表中获取“BILL”
How to get a “BILL” from multiple tables
简单的餐厅架构
带有插入和订单事务的postgresql
https://hastebin.com/cobuquzobo.sql
每个 guest/s 在 sitting_table
是一个新的 table
同一 sitting_table
上的每个订单都将是一个新订单 orderr
账单将通过输入 sitting_table_id
、orderr
id
与输入的 sitting_table_id
一起使用,最多 orderr_menu_item
...
(使用 psycopg2/python,在 linux cmd 中打印)
例如,我想打印一个 BILL,并希望将它们存储起来...
现在我有点迷茫,不知道该做什么或应该做什么
帐单数据如下:
bill nr23
order2
cola × 2 15.50 31.00
pizza × 2 50.00 100.00
order3
squid × 3 50.00 150.00
total price ..
谢谢!
您的 RDBMS 不是生成格式化的、面向客户的账单的正确工具。然而,它可以为您做的是将生成账单所需的所有信息交给您;剩下的工作属于表现层。
这是一个 SQL 查询,可用于收集允许您的应用程序生成帐单的信息。
它遵循在您的架构中声明的关系 link tables sitting_table
、orderr
、orderr_menu_item
、menu_item
和 employee
。这几乎连接了架构中的所有 table,因此如果需要额外的列,您应该能够对其进行调整。
数据通过坐 table、订单和菜单项以及相关数量和计算值进行聚合;从您提供的信息来看,这似乎是您预期的聚合水平。
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
。
简单的餐厅架构
带有插入和订单事务的postgresql https://hastebin.com/cobuquzobo.sql
每个 guest/s 在 sitting_table
是一个新的 table
同一 sitting_table
上的每个订单都将是一个新订单 orderr
账单将通过输入 sitting_table_id
、orderr
id
与输入的 sitting_table_id
一起使用,最多 orderr_menu_item
...
(使用 psycopg2/python,在 linux cmd 中打印)
例如,我想打印一个 BILL,并希望将它们存储起来...
现在我有点迷茫,不知道该做什么或应该做什么
帐单数据如下:
bill nr23
order2
cola × 2 15.50 31.00
pizza × 2 50.00 100.00
order3
squid × 3 50.00 150.00
total price ..
谢谢!
您的 RDBMS 不是生成格式化的、面向客户的账单的正确工具。然而,它可以为您做的是将生成账单所需的所有信息交给您;剩下的工作属于表现层。
这是一个 SQL 查询,可用于收集允许您的应用程序生成帐单的信息。
它遵循在您的架构中声明的关系 link tables sitting_table
、orderr
、orderr_menu_item
、menu_item
和 employee
。这几乎连接了架构中的所有 table,因此如果需要额外的列,您应该能够对其进行调整。
数据通过坐 table、订单和菜单项以及相关数量和计算值进行聚合;从您提供的信息来看,这似乎是您预期的聚合水平。
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
。