2014-05-15 3 views
-3

SQL Server 2008 R2에 여러 값을 추가하고 지불 한 금액을 기준으로 항목을 검색하는 방법.총 지급액을 기준으로 항목을 검색하는 방법

주문 테이블 :

OID   Item   Price 
1    A   38 
2    B   19 
3    C   39.5 

지불 테이블 : 쿼리 내가 ItemA를 검색 할 수있어

다음
Select ItemName from A inner join B on OID=PID and Price=Amount; 

처럼 간다하지만 때 지금

PID    Amount 
1     38 
2     58.5 

이 쿼리하지 않습니다 B 항목과 C 항목은 지불 금액이 두 가지 항목.

+2

두 가지 사실을 연결하는 데이터가없고, 지불 및 항목 만있는 경우 이야기 할 수있는 'ItemPayments' 테이블이 없습니다. 어떤 지불금이 어떤 품목인지 파악할 수있는 방법이 없다면 원하는 것을 할 수 없습니다. 물론 어떤 상품이 특정 결제에 '적합'할 수 있는지를 반환하고 싶지 않은 경우가 아니라면 이것이 사실이 아니라고 생각합니다. 'Payment' 테이블에 다른 필드가 없습니까? 항목에 지불하는 접합 테이블이 없습니까? – Charleh

+0

요점은 "58.5의 합계에 대해 B와 C 항목을 검색하는 방법"입니다. – user1561245

+0

현재 데이터로이를 달성 할 수는 있지만 간단하지는 않습니다. 지불과 항목을 조인하는 또 다른 관계가 있습니까? 그렇지 않으면 항목 및 지불 테이블이 커지면 쿼리 작성이 어려워지고 수행 속도가 느려지고 질문에 대한 잘못된 대답을 제공 할 가능성이 있습니다. 당신이 뭔가 잘못하지 않았다고 확신합니까? 이것은 데이터에 적용하려고하는 '수정'입니까 아니면이 보고서입니까? 배경을 줄 수 있어요? – Charleh

답변

1

테이블 구조가 잘못되었습니다. order_Id 및 Payment_Id가있는 추가 테이블이 하나 필요합니다. OID와 같은 는, PID 테이블 이름은 OrderPayment하고 다음 A.OID = OrderPayment.OID 내부에 가입 OrderPayment 내부에서이 Select 문

선택 A.ItemName을 사용 B.PID = OrderPayment.PID

에 B에 가입
관련 문제