1

이 시나리오의 아키텍처는 다음과 같습니다.이 데이터를 검색하는 가장 좋은 방법은 무엇입니까?

테이블과 양식 테이블이 여러 개 있습니다. 양식 자체가 항목을 소유하는 대신, 항목은 양식을 소유합니다. 이는 하나의 항목이 여러 양식에있을 수 있기 때문입니다 (각 유형 중 하나만 있지만 모든 항목이 필요하지는 않습니다). 양식과 항목은 모두 OrderId으로 묶여 있습니다. 다음과 같이 표현할 수 있습니다.

OrderItems | Form A | Form B etc.... 
---------- |--------- | 
ItemId  |FormAId | 
OrderId |OrderId | 
FormAId |SomeField | 
FormBId |OtherVar | 
FormCId |etc... 

이 형식의 경우에는 정상적으로 작동합니다. 그러나 여러 폼의 항목으로 구성되어 있기 때문에 OrderId을 가질 수없는 다른 폼 (예 : FormX)이 있습니다. OrderItems에는 FormXId에 대한 열이 포함되어 있지만 하나의 OrderId과 관련된 "FormX"목록을 얻는 가장 좋은 방법은 혼란 스럽습니다. 나는 MySQL을 사용하고 있으며 저장 프로 시저가이 작업을 수행하는 가장 좋은 방법이라고 생각하고 있었지만 MySQL에 저장된 proc을 사용하지는 못했고 가장 좋은 방법을 알지 못했습니다. 내 다른 (kludgy) 옵션은 DB를 두 번 치기 위해 먼저 주어진 OrderId에 해당하는 모든 항목을 얻은 다음 FormXId을 모두 가져온 다음 FormXId을 모두 얻고 동적으로 SELECT 문을 수행합니다 (의사)

SELECT whatever FROM sometable WHERE FormXId=x OR FormXId=y.... 

은 분명히이 이상적이지,하지만 난 정말 다른 방법을 생각할 수 없다 ... 아무것도 나도 프로그램 또는 건축 할 수있는 더 나은? 내 백 엔드 코드는 ASP.NET입니다.

감사합니다.

UPDATE 대한 추가 정보 요청에 대한 응답으로

:

샘플 입력 :

FormXs: 
----------------- 
FormXId | FieldA | FieldB | etc 
------------------------------- 
1003 | value | value | ... 
1020 | ... .. .. 
1234 | .. . .. . . ... 

당신은 문제를 볼

OrderId = 1000 

샘플 출력이다 FormX 단 하나의이 없다.이 아니라 OrderId의 모음입니다. 때로는 같은 주문의 여러 항목이 FormX에 있고, 때로는 하나 뿐인 경우가 대부분이며, 대부분의 주문에는 FormX에 대한 항목이 없습니다. 하지만 누군가가 주문을 내면, 수정/열람 할 수 있도록 모든 아이템이 나타나야합니다.

나는 위에서 말한 것을 수행하는 저장된 proc을 만들려고 생각하고 있는데, 하나의 쿼리를 실행하여 모든 관련 OrderId을 풀고 다른 하나가 적절한 FormX를 반환하도록했습니다. 하지만 더 좋은 방법이 있어야합니다 ...

+0

@omg 조랑말 - 내 질문을 업데이 트 ... plz 당신이 더 필요하면 말해. 감사! :) – Jason

답변

1

하나의 OrderId와 관련된 "FormX"의 목록을 가져와야한다는 것을 알고 있습니다. OrderItems에 FormXId에 대한 열이 포함되어 있다고 가정 해보십시오. 다음과 같은 쿼리를 실행할 수 있습니다

select 
    FormX.* 
From 
    OrderItems 
join 
    Formx 
on 
    OrderItems.FormXId = FormX.FormXId 
where 
    OrderItems.OrderId = @orderId 

당신은 당신의 쿼리에 @orderId 전달해야하고이 순서에 관련된 FormX 기록 설정 기록을 얻을 것이다.

@orderId 매개 변수를 사용하여이 쿼리를 저장 프로 시저로 패키지하거나 동적 SQL을 사용하고 쿼리를 실행하는 실제 주문 번호로 @orderId를 사용할 수 있습니다.

+0

duh. 나를 멍청한 느낌으로 만들어 줘서 고마워. :) – Jason

관련 문제