代表多种付款方式

时间:2017-02-22 21:44:08

标签: sql oracle database-design

我的情况是客户可以通过信用卡或PayPal帐户付款。我目前有一个超级班的客户'有两个子类型的公共'和'商业'。但是,这两种类型都可以通过任何一种付款方式支付,并且可以使用多个信用卡/ PayPal帐户。

我有一个当前的模型,但不是有多张卡等。我最终需要能够通过什么方法查询客户支付的内容。例如,在一段时间内通过信用卡支付了多少客户。

取消付款明细的模型类似于:

[订购] - - - - [客户] ---(d)--- [PUBLIC] [商业]

1 个答案:

答案 0 :(得分:0)

在SQL中提取这种查询应该不是问题。如果您为付款帐户添加了表格,并且PAYPAL_ACCOUNT和CREDITCARD_ACCOUNT需要是两个单独的表格,您可以将这些表格与CUSTOMER和ORDER相关联,但不与PUBLIC或COMMERCIAL相关联。

您可以在SQL中使用LEFT JOIN来显示不包含每个表的行。这将填充表中的字段为null,例如当它是来自PUBLIC帐户的订单并且您查看COMMERCIAL表时

SELECT * from ORDER o
INNER JOIN CUSTOMER c on c.ID = o.CustomerID
LEFT JOIN PUBLIC p on p.CustomerID = c.ID
LEFT JOIN COMMERCIAL co on co.CustomerID = c.ID
LEFT JOIN PAYPAL_ACCOUNT pa on pa.ID = o.PaypalAccountID
LEFT JOIN CREDITCARD_ACCOUNT cc on cc.ID = o.CreditCardAccountID

然后你可以在最后添加where子句来缩小范围

WHERE o.PaypalAccountID is not null

仅拉起Paypal