0

我有一種情況,客戶可以通過信用卡或PayPal帳戶支付。我目前有一個超級類作爲「客戶」,有兩種「公共」和「商業」子類型。但是,這兩種類型都可以通過任何一種付款方式進行支付,並且可以有多個信用卡/貝寶賬戶與之相關聯。代表多項付款方式

我有一個當前的模型,但不是因爲有多張卡片等。我最終需要能夠查詢用什麼方法支付的客戶。例如,一段時間內有多少客戶通過信用卡支付。

模型減去支付細節看的相似:

[訂購] ----- [客戶] ---(d)--- [PUBLIC] [商業]

回答

0

它應該在SQL中引入這種查詢不是問題。如果您添加了付款帳戶的表格,並且PAYPAL_ACCOUNT和CREDITCARD_ACCOUNT需要兩個單獨的表格,則可以將這些表格與客戶和訂單關聯,但不能關聯到PUBLIC或COMMERCIAL。

您可以使用SQL中的LEFT JOIN來顯示不包含每個表的行。這將填補與空例如表中的字段時,它是從公共賬戶的訂單,你看看商用臺式

SELECT * FROM命令○

INNER JOIN客戶C對C。 ID = o.CustomerID

LEFT JOIN上p.CustomerID PUBLIC p = c.ID

LEFT JOIN商業合作上co.CustomerID = c.ID

LEFT JOIN PAYPAL_ACCOUNT PA上pa.ID = o.PaypalAccountID

LEFT JOIN上cc.ID = o.CreditCardAccountID

CREDITCARD_ACCOUNT cc且然後可以添加,其中在所述端子句將它縮小

WHERE o.PaypalAccountID是NOT NULL

拉起只有貝寶

+0

當你說那兩個TABL關聯es(因爲我已經擁有了它們),你打算怎麼做?在CUSTOMER和ORDER之間包含一個鏈接表...說,鏈接到CREDITCARD和PAYPAL的付款? @TomEsch –

+0

如果它在您所在的平臺上運行良好,我會向ORDER添加兩個字段,一個是PaypalID,一個是CreditCardID,然後只填寫相應的字段並將其中一個留空。使這些字段成爲PAYPAL_ACCOUNT和CREDITCARD_ACCOUNT ID字段的外鍵。 –

+0

但是我已經考慮過這個概念,我不喜歡接受空值的想法,並且在整個數據庫的所有其他表中避免了這個概念。付款方式必須與CUSTOMER和ORDER有關係。當他們有多張卡片/貝寶賬戶時,我可以在表格中重複cust_id。 @TomEsch –