2013-08-20 2 views
1

투표를 등록하고 액세스 테이블을 업데이트하는 Borlands Delphi 7의 투표 응용 프로그램을 만들었습니다. 내 액세스 테이블은 두 개의 열로 구성되며 열 1은 후보의 이름이고 열 2는 그/그녀가 얻은 득표 수쿼리를 사용하여 테이블에서 승자 얻기

가장 많은 득표 수를 가진 후보자를 얻고 싶다면 어떻게 될 것입니까?

나는

SELECT Max(Candidate.[Candidate Name]) AS [MaxOfCandidate Name], Max(Candidate.[Number of Votes]) AS [MaxOfNumber of Votes] 
FROM Candidate 

; 

을 시도했지만이 하나 하나 개의 값을 반환하고, 따라서 첫 번째 이름이 표시됩니다 투표 같은 양의 2 명 이상의 후보자가있는 경우.

답변

1

Dmax 표현식을 사용하면 가장 많은 투표 수를 결정할 수 있습니다. 그 값과 일치하는 행을 검색하십시오.

SELECT [Candidate Name], [Number of Votes] 
FROM Candidate 
WHERE [Number of Votes] = DMax("[Number of Votes]", "Candidate"); 

그러나 DMax은 Access 고유이다. 델파이를 사용하고 있기 때문에 아마도 더 이식 가능한 쿼리를 선호 할 것입니다. 그렇다면 WHERE 절의 하위 쿼리를 사용하여 최대 투표 수를 얻을 수 있습니다.

SELECT [Candidate Name], [Number of Votes] 
FROM Candidate 
WHERE 
    [Number of Votes] = 
     (
      SELECT Max([Number of Votes]) 
      FROM Candidate 
     ); 
+0

정말 고맙습니다. 정말로 도움이되었습니다. 하위 쿼리와 같은 것을 가질 수 있다는 것을 결코 알지 못했습니다. –

관련 문제