我如何获得每张发票的价格?

时间:2009-05-25 21:51:22

标签: sql mysql

我正在开发一个每天处理大约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查询价格。

2 个答案:

答案 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)

然后您有一张表格可以将价格与发票相关联,每张发票可以包含一个或多个订单项。