0

고객이 신용 카드 또는 PayPal 계정을 통해 지불 할 수있는 상황이 있습니다. 저는 현재 '대중'과 '상업'이라는 두 가지 하위 유형이있는 '고객'으로 수퍼 클래스를 운영하고 있습니다. 그러나 두 가지 유형 모두 두 가지 유형 중 하나로 지불 할 수 있으며 여러 가지 신용 카드/PayPal 계정을 사용할 수 있습니다.Mutliple 지불 방법을 나타내는

나는 현재 작동하는 모델을 가지고 있지만 여러 장의 카드를 가지고있는 것은 아닙니다. 결국 어떤 고객이 어떤 방법으로 지불했는지 쿼리 할 수 ​​있어야합니다. 예를 들어 한 기간 동안 신용 카드로 지불 한 고객 수.

모델 뺀 지불 세부 사항의 유사에 보면 :

[예약] ----- [고객] --- (D) --- [PUBLIC] [업적]

답변

0

그것은해야 SQL에서 그런 종류의 쿼리를 가져 오는 것은 문제가되지 않습니다. 지불 계정에 대한 테이블을 추가하고 PAYPAL_ACCOUNT 및 CREDITCARD_ACCOUNT를 별도의 테이블 두 개가 필요하면이를 CUSTOMER 및 ORDER에 연결할 수 있지만 PUBLIC 또는 COMMERCIAL에는 연결할 수 없습니다.

SQL에서 LEFT JOIN을 사용하여 모든 테이블을 포함하지 않는 행을 표시 할 수 있습니다. 그것은 PUBLIC 계정에서 주문이 때, 예를 들어 널 (null)이있는 테이블의 필드를 채울 것입니다 그리고 당신은 C에 고객 C를 가입

INNER O를 ORDER에서 COMMERCIAL 테이블

SELECT * 봐. ID = o.CustomerID

= LEFT c.ID가

LEFT 온 co.CustomerID = c.ID

LEFT PAYPAL_ACCOUNT 씩 가입 상업 공동 가입 p.CustomerID에 가입 PUBLIC P = pa.ID o.PaypalAccountID

LEFT

는 cc.ID = o.CreditCardAccountID

에 CREDITCARD_ACCOUNT의 CC 가입하고 o.PaypalAccountID는 WHERE 마지막 절은

그것을 좁힐 경우 당신은 추가 할 수 있습니다 NOT NULL

당신이 그 두 TABL을 연결 말할 때 단지 페이팔

+0

을 당겨 es (내가 이미 가지고 있기 때문에), 어떻게 그렇게 할 것을 제안합니까? 고객과 주문 사이에 연결 표를 포함하십시오. 결제, 신용 카드 및 PAYPAL로 연결되는 결제 방법은 무엇입니까? @TomEsch –

+0

당신이있는 플랫폼에서 잘 작동한다면 주문에 두 개의 필드를 추가합니다. 하나는 PaypalID이고 다른 하나는 CreditCardID이며 적절한 하나를 채우고 다른 하나는 null로 남겨 두는 것입니다. 해당 필드를 PAYPAL_ACCOUNT 및 CREDITCARD_ACCOUNT ID 필드의 외래 키로 만듭니다. –

+0

나는 이미 그 개념을 고려했지만, 나는 nulls를 받아들이는 아이디어를 좋아하지 않으며 DB의 다른 모든 테이블에서 그것을 피했다. 지불 방법은 CUSTOMER 및 ORDER와 관계가 있어야합니다. 나는 카드/페이팔 계정이 여러 개있을 때 테이블에서 cust_id를 반복하는 것으로 괜찮습니다. @TomEsch –