2012-08-10 2 views
3

두 테이블이 서로 관련되어 있습니다 : QUOTERunQUOTERunResults. QUOTERun에는 특정 견적에 필요한 모든 항목이 들어 있습니다. QUOTERunResults에는 모든 공급 업체 응답에 대한 레코드가 들어 있습니다. 그 응답을 분석하고 가장 적합한 공급 업체를 선택하고 Preffered이라는 필드를 true로 설정하는 프로그램이 있습니다. 언젠가 어느 벤더도 일하지 않을 것입니다. 나는 QUOTERun에있는 모든 레코드의 목록을 만들어야하는데,이 레코드는 QUOTERunResults에 일치하는 레코드가 있으며,이 레코드는 preffered로 표시되어 있습니다. 위의 일을보다 효율적인 방법이다른 쿼리에서 contianed되지 않은 레코드 찾기

Set rs1 = CurrentDb.OpenRecordset("SELECT ReferenceNumber FROM [QUOTERun] WHERE RunID = " & TempRunID, dbOpenDynaset) 
Set rs2 = CurrentDb.OpenRecordset("SELECT ReferenceNumber, Preffered FROM [QUOTERunResults] " & _ 
            "WHERE RunID = " & TempRunID & " AND Preffered = True", dbOpenDynaset) 
If (rs2.RecordCount = 0) Then 
    TempListNotComplete = "NONE OF THE VENDOR RESPONSES HAD ENOUGH STOCK. NO RECORDS HAVE BEEN MARKED AS PREFFERED." 
ElseIf (rs1.RecordCount <> 0) Then 
    rs1.MoveFirst 
    Do While rs1.EOF <> True 
     rs2.FindFirst "ReferenceNumber = " & rs1.Fields("[ReferenceNumber]").value 
     If (rs2.Fields("[ReferenceNumber]").value <> rs1.Fields("[ReferenceNumber]").value) Then 
     If (TempListNotComplete = "") Then 
      TempListNotComplete = rs1.Fields("[ReferenceNumber]").value 
    Else 
      TempListNotComplete = TempListNotComplete & ", " & rs1.Fields("[ReferenceNumber]").value 
    End If 
     End If 
     rs1.MoveNext 
    Loop 
End If 

가 : 여기

는 지금까지이 무엇인가?

답변

3

당신은 쿼리 디자인 창의 SQL보기에서 쿼리를 만들 수 있습니다

SELECT a.ReferenceNumber 
FROM 
    (SELECT ReferenceNumber 
    FROM [QUOTERun] 
    WHERE RunID = [Enter TempRunID]) a 
LEFT JOIN 
    (SELECT ReferenceNumber, Preffered 
    FROM QUOTERunResults 
    WHERE RunID = [Enter TempRunID] AND Preffered = True) b 
On a.ReferenceNumber=b.ReferenceNumber 
WHERE b.ReferenceNumber Is Null 

는 위의 두 번째 파생 테이블에없는 최초의 파생 테이블의 모든 레코드를 표시해야합니다.