0

Ich habe eine Situation, in der Kunden in der Lage sind, entweder über eine Kreditkarte oder über ein PayPal-Konto zu bezahlen. Ich habe derzeit eine Super-Klasse als "Kunde" mit zwei Untertypen von "öffentlich" und "kommerziell". Beide Arten können jedoch mit beiden Zahlungsmethoden bezahlen und mehrere Kreditkarten/PayPal-Konten haben.Darstellen von mehreren Zahlungsmethoden

Ich habe ein aktuelles Modell, das funktioniert, aber nicht für mehrere Karten usw. Ich muss schließlich in der Lage sein, abzufragen, welcher Kunde mit welcher Methode bezahlt. Zum Beispiel, wie viele Kunden während eines Zeitraums per Kreditkarte bezahlt haben.

Das Modell abzüglich der Zahlungsdetails sehen die ähnlich wie:

[ORDER] ----- [CUSTOMER] --- (D) --- [PUBLIC] [COMMERCIAL]

Antwort

0

sollte es kein Problem sein, diese Art von Abfrage in SQL zu ziehen. Wenn Sie die Tabellen für Zahlungskonten hinzugefügt haben und PAYPAL_ACCOUNT und CREDITCARD_ACCOUNT zwei separate Tabellen sein müssen, ordnen Sie diese dem KUNDEN und der BESTELLUNG zu, aber nicht PUBLIC oder COMMERCIAL.

Sie könnten LEFT JOIN in SQL verwenden, um Zeilen anzuzeigen, die nicht alle Tabellen enthalten. Dadurch werden die Felder in einer Tabelle mit null beispielsweise füllen, wenn sie einen Auftrag von einem öffentlichen Konto ist und man sich die COMMERCIAL Tabelle

SELECT * von ORDER o

INNER CUSTOMER c auf c JOIN. ID = o.CustomerID

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

LEFT JOIN COMMERCIAL co auf co.CustomerID = c.ID

LEFT PAYPAL_ACCOUNT pa JOIN auf pa.ID = o.PaypalAccountID

LEFT JOIN CREDITCARD_ACCOUNT cc auf cc.ID = o.CreditCardAccountID

und dann kann man hinzufügen, wo Klausel am Ende es

einzuengen WHERE o.PaypalAccountID ist nicht null

nur Paypal

+0

nach oben zu ziehen, wenn man diese beiden tabl sagen assoziieren es (Weil ich sie schon habe), wie schlägst du vor, das zu tun? Fügen Sie eine Verknüpfungstabelle zwischen KUNDE und AUFTRAG ein ... Sagen Sie, ZAHLUNG, die zu CREDITCARD und PAYPAL verbindet? @TomEsch –

+0

Wenn es auf der Plattform, auf der Sie sich befinden, gut funktioniert, würde ich zwei Felder zu ORDER hinzufügen, eine, die PaypalID ist und eine, die eine CreditCardID ist, und nur die entsprechende ausfüllen und die andere Null lassen. Machen Sie diese Felder Fremdschlüssel für die Felder PAYPAL_ACCOUNT und CREDITCARD_ACCOUNT ID. –

+0

Ich habe dieses Konzept bereits berücksichtigt, aber ich mag die Idee, Nullen zu akzeptieren, nicht und habe sie in allen anderen Tabellen der DB vermieden. Die Zahlungsmethoden müssen eine Beziehung mit KUNDEN und AUFTRAG haben. Es geht mir gut, wenn ich cust_id in einer Tabelle wiederhole, wenn sie mehrere Karten/Paypal-Konten haben. @TomEsch –

Verwandte Themen