2017-03-13 1 views
1
SqlCommand cmd = new SqlCommand(@" 
    SELECT 
     dbo.tblDepartment.Prefix, 
     dbo.tblQueue.QueueNumber, 
     dbo.tblEmployees.EmpName 
    FROM dbo.tblDepartment 
    INNER JOIN dbo.tblEmployees ON dbo.tblDepartment.EmpID= dbo.tblEmployees.EmpID 
    INNER JOIN dbo.tblQueue ON dbo.tblDepartment.DeptID = dbo.tblQueue.DeptID 
    WHERE tblDepartment.DeptID = 1 
    and tblQueue.QueueNumber in (SELECT 
            MIN(QueueNumber) 
           FROM tblQueue 
           WHERE tblQueue.QueueStatus = 'Pending')", con); 

안녕하세요. 열 상태가 "보류 중"인 최소값을 얻는 쿼리가 있습니다. 하지만 "Done"상태로 바꿀 때마다 보류 중 상태가 아닌 "Done"상태로 최소값을 얻습니다.최소값 받기

+0

이 쿼리의 문제는 무엇인가 코드가 문제가 않습니다 그러나? – Murad

+0

QueueNumber 열과 QueueStatus 열이 있으므로 열 QueueStatus에서 "대기 중"상태의 QueueNumber 열에 최소 값을 가져 오려고하지만 QueueStatus 열의 상태를 "완료"로 변경할 때마다 ... "보류 중"상태의 다음 최소값을 얻지 못하여 문제가 발생하면 "보류 중"상태가 아닌 "완료"상태의 최소값을 가져옵니다. – Ekko

+0

@Ekko : Where 절에 "Done"을 전달하면 완료 상태와 관련된 데이터 만 반환합니다. –

답변

0

분명히 문제가 코드에 없기 때문에 데이터베이스가 섞여 있거나 그럴 수도 있습니다.

편집 :이 (here is a demo)처럼,뿐만 아니라 내부 쿼리 내부의 DeptID를 지정해야합니다 :

SELECT 
    dbo.tblDepartment.Prefix, 
    dbo.tblQueue.QueueNumber 
    FROM dbo.tblDepartment 
    INNER JOIN dbo.tblQueue ON dbo.tblDepartment.DeptID = dbo.tblQueue.DeptID 
    WHERE tblDepartment.DeptID = 2 
    and tblQueue.QueueNumber in 
    (
     SELECT MIN(QueueNumber) 
     FROM tblQueue 
     WHERE tblQueue.DeptID = 2 
      and tblQueue.QueueStatus = 'Pending' 
    ) 
+0

감사합니다. – Ekko

+0

그래서 무엇이 잘못 되었습니까? –

+0

당신이 말했을 때 당신은 그것이 혼란 스러울뿐입니다 ... 나는 방금 테이블 안의 값들을 변경했기 때문에 효과가있었습니다 ... 그러나 다음 문제는 ... Where where 절의 DeptID를 2로 변경할 때, 그것은 아닙니다. 모든 값을 가져 오는 중 – Ekko