2013-04-17 2 views
0

열 id, shiftid, occurrence, delfee가있는 전달 테이블이 있습니다. delcash, delcc, delsplit이라는 세 개의 다른 테이블이 있습니다. 델 현금에는 열 (id, cost, paid)이 있으며 delcc에는 열 (id, cccost, ccpaid, cashtip)이 있고 delsplit에는 열 (id, cashcost, cashpaid, cccost, ccpaid)이 있습니다. id는 지불 유형에 따라 배달 항목을 세 개의 다른 테이블 중 하나에 연결합니다. 테이블을 함께 연결하는 목록을 얻으려는 중입니다. 그래서 목록을 반복하고 각 전달의 팁 및 배달 수수료뿐만 아니라 발생 순서대로 각 전달을 보여주는 테이블을 얻을 수 있습니다. 어떤 생각이라도 가능합니까? 아니면 그냥 SQL을 사용해야합니까?4 개의 테이블을 결합하는 Linq 쿼리

SELECT deliveries.occurrence, deliveries.delfee,delcash.cost,delcash.paid,delcc.cost,delcc.paid,delcc.cashtip, 
delsplit.cashcost,delsplit.cashpaid,delsplit.cccost,delsplit.ccpaid 
FROM deliveries 
LEFT JOIN delcash 
ON deliveries.id = delcash.id 
LEFT JOIN delcc 
ON deliveries.id = delcc.id 
LEFT JOIN delsplit 
ON deliveries.id = delsplit.id 
+0

Entity-Framework를 사용하고 있습니까? – lexeRoy

+0

예 엔터티를 사용 중입니다. –

+0

각 테이블에서 외래 키를 지정하거나 제공 할 수 있습니까? – lexeRoy

답변

0

새 클래스를 만들고 세 가지 비용 테이블이 다음 테이블을 매핑하는 콘크리트 형 전략 당 표를 적용 할 수있는이 클래스에서 상속하도록 할 수 있습니다.

은 다음을 참조하십시오 http://weblogs.asp.net/manavi/archive/2010/12/24/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1-table-per-hierarchy-tph.aspx

또는 데이터베이스를 재 설계 및 유형 전략에 따라 표를 적용합니다. 이 같은

0

시도 뭔가 :

나는 또한 먼저 테이블을 정상화 제안합니다
var joinedDel = from delivery in tblDeliveries 
       join delC in tblDelCash on delivery.id equals delC.id 
       join delCC in tblDelCreditCard on delivery.id equals delCC.id 
       join delSplit in tblDelSplit on delivery.id equals delSplit.id 
       select new { 
         //Then create a new instance of Anonymous object where you will set all values of its properties 
         //For example, you can set ShiftID = delivery.ShiftID 
       }; 

(참고로이 link 참조). 이렇게하면 테이블을 적절하게 결합하는 방법을 더 잘 이해할 수 있습니다.

+0

나는 테이블을 정상적으로 설정 한 방법을 생각 했나요? 그렇지 않다면 올바르게 표준화하는 방법에 대한 구체적인 예를 들어 줄 수 있습니까? –

+0

나는 다음과 같은 것을 제외하고는 목록에있는 것과 매우 유사합니다. db.deliveries의 배송에서 dbclick에서 delcashes에 가입 on deliveries.id는 delcashes.id와 같습니다. dbcc에서 dbcc에 가입하십시오. 배송시 배달에 .id equals delccs.id db.delsplits의 delsplits 가입 on deliveries.id는 delsplits.id와 같습니다. 새 deliverylistitem()에서 이름의 변형은 모델을 만들 때 Visual Studio에서 생성 한 이름의 이름입니다. –

+0

조인 된 테이블에 필요한 속성은 무엇입니까? SQL과 마찬가지로 필드에 포함 할 항목을 선택해야합니다. 예를 들어'id','ShiftId','Occurence' 및'Delete' 세부 사항이 필요합니다. 예,'DeliveryListItem' 객체의 새로운 인스턴스를 생성하고 그 속성을 설정할 수 있습니다. 익명 객체를 사용하면 코드에서 정의 된 객체에서 찾을 수없는 여러 속성을 유연하게 설정할 수 있습니다. – lexeRoy

관련 문제