【发布时间】:2017-03-22 00:10:22
【问题描述】:
表 1:发票(inv_id、inv_value、cust_id)
表 2:客户(cust_id、sales_rep)
表 3:成员(Member_id、member_cateogry、member_type、cust_id)
注 1:每位客户支付多张发票。 (一对多关系)。
注 2:每位客户为一位或多位会员付费(因此一位以上的会员可能与一位客户相关)。
注 3:每个成员都有一个类别,可以是 1“代表个人”或 2“代表团体”。
注 4:每个成员都有一个类型,可以是 1“代表新”或 2“代表续订”。
我想为sales_rep = 1 和他们的member_category = 10 和他们的members_type = 123 的客户获取Invoice_value 字段的总和
例如:如果这些客户的 Sales_rep 为 1,并且他们支付的会员是新会员和个人会员,客户支付的发票总额是多少。
我试过了:
SELECT Sum(invoices.inv_value) AS total
FROM invoices,
customers,
members
WHERE invoices.cust_id = customers.cust_id
AND members.custid = customers.cust_id
AND members.category = {$category}
AND members_type = {$type}
AND customers.sales_rep = {$id}";
与
SELECT Sum(invoices.inv_value) AS total
FROM members
INNER JOIN customers
ON members.custid = customers.cust_id
INNER JOIN invoices
ON customers.cust_id = invoices.cust_id
WHERE customers.sales_rep = {$id}
AND members.category = {$category}
AND members.type = {$type}";
但两者都返回双倍的发票值。
例如:使用这些 sql 查询,Invoices 表中 1 美元 120 美元的发票返回 240 美元。
我该如何解决这个问题?
【问题讨论】:
-
添加样本表数据,给出不同的返回/预期结果。 (以及格式化文本。)
-
提供表格架构、表格之间的关系、示例数据和您的预期结果
-
确保
members.category和members.type中没有重复的customer_id -
@jarlh 预期结果是“单值”代表特定客户的 Invoice 总金额。