2014-04-11 3 views
0

대학 데이터베이스 프로젝트를 위해 Excel에 연결되는 Access Database가 있습니다. 목표는 Update/SQL 쿼리를 사용하여 가져 오기 전에 잘못되었거나 불완전한 데이터를 수정하는 것입니다. 특히 주문 상태를 포함하는 필드 인 하나의 항목이 있습니다. 주문이 완료되면 = 완료, 주문에 몇 개의 부품이 누락 된 경우 = Backorder 및 전혀 제공되지 않음 = Open. 내가 가진 문제는 하나의 PO ID #에 여러 부분이 있기 때문에 주문이 2/5 부분이 완료 될 수 있고 3/5가 백 오더 일 수 있으므로 주문이 백 오더에 있는지를 판단하기가 어렵습니다. 내가 자동으로 기본 주문 상태를 설정하도록 액세스를 강제 할 수있는 방법이나 긴 SQL 쿼리입니까? 쿼리를 반환 할 수 SQL로액세스 업데이트가 작동하지 않습니다.

감사

+0

여러 부분으로 무엇을 의미합니까? 관련 스키마와 지금까지 가지고있는 것을 보여줄 수 있습니까? – Goose

+0

http://postimg.org/image/i5llhcaf7/ – Treevar

+0

기본적으로 각 구매 주문 번호는 주문 된 부품을 식별하는 POItemID에 연결됩니다. 목록을 확장하면 수신 기록이 표시됩니다. 내가 뭘 하려는지는 주문이 완료되었거나, 열려 있거나 (수신되지 않음) 또는 백 오더 (완전히 수신되지 않은 경우)를 기준으로 결정됩니다. 액세스 쿼리를 수행하고 구매 주문 번호에 여러 상품 ID가있는 경우 주문 상태를 결정하는 방법을 찾지 못했습니다. – Treevar

답변

0

CASE 문을 사용하여, 주문 상태를 찾을 수 있습니다. (난 그냥 ID 열을 믿고있어) 나는 당신이 가지고있는 부모 테이블의 테이블/열 이름의 모르겠지만 아마 당신은 여기에서 그것을 조정할 수 있습니다

SELECT P.Id, P.Name, "Status" = 
    CASE 
     WHEN R.QuantityReceived < I.QuantityOrdered THEN 'Backorder' 
     WHEN R.QuantityReceived = I.QuantityOrdered THEN 'Complete' 
     WHEN R.QuantityReceived > I.QuantityOrdered THEN 'Open' 
    END 
FROM PurchaseOrders P INNER JOIN POItem I on P.PurchaseOrderId = I.PurchaseOrderId 
         INNER JOIN POReceipt R on I.ItemId = R.ItemId 

을 그래서 일단 당신이 당신의 테이블에 가입해야 관련 레코드를 얻으려면 (각각 하나만 있다고 가정), CASE 문을 사용하여 필드 간의 비교를 기반으로 찾고있는 값을 반환하십시오.

+0

감사 기러기! 나는 각각 하나의 테이블을 가지고있다. (하나는 PO #와 함께) (하나는 PO 테이블과 함께) (하나는 수신 테이블과 함께) 이것을하기 위해 SQL보기로 전환하고 CASE를 사용하면 시작해야합니다! – Treevar

관련 문제