我正在开发一个每天处理大约500张发票的后端。我的数据库中有以下表格。
invoices
invoice_id int primary_key auto_increment
user_id varchar(10)
invoice_type enum { package, document }
users
user_id int primary_key auto_increment
rate_package_id int
rate_document_id int
rates
rate_id int
rate_name varchar(10)
rate_prices
price_id int primary_key auto_increment
rate_id int
weight int
price double(8,2)
在一天结束时,我必须为每张发票设定价格。
如何获得每张发票的价格?我实际上没有ieda除了将'rate_package_id'和'rate_package_document_id'添加到发票表,所以我可以直接从rate_prices查询价格。
答案 0 :(得分:3)
SELECT invoice_id, price
FROM invoices i
JOIN users u
ON u.user_id = i.user_id
JOIN rates r
ON r.rate_id = CASE WHEN i.invoice_type = package THEN u.rate_package_id ELSE u.rate_document_id END
JOIN rate_prices p
ON p.rate_id = r.rate_id
不确定你在哪里保持包裹的重量。
似乎必须是invoices
,在这种情况下,只需将其添加到最后JOIN
条件。
答案 1 :(得分:1)
我假设您可能需要一个与发票相关联的LineItems表,例如:
lineitem_id int primary_key auto_increment
invoice_id int
price_id int
quantity int
total_price double(8,2)
然后您有一张表格可以将价格与发票相关联,每张发票可以包含一个或多个订单项。