2011-03-11 5 views
0

안녕하세요, 저는 SQL의 하위 쿼리에 몇 가지 문제가 있습니다. MS Access 2010을 사용하고 SQL을 작성하고 있습니다.하위 쿼리를 올바르게 작성하는 방법

SELECT vak.Name, COUNT(vak.amount) AS [First], COUNT(vak2.amount2) AS [Second]  
FROM 
(SELECT kon.Name, (Count(icv.CV_ID)/Count(icv.CV_ID)) AS amount 
FROM (kon INNER JOIN v ON kon.K_ID = v.K_ID) INNER JOIN icv ON v.Vak_ID = icv.Vak_ID 
GROUP BY v.Vak_ID, kon.Name) AS vak, 
(SELECT kon.Name, COUNT(v.Vak_ID) AS amount2 
FROM (kon INNER JOIN v ON kon.K_ID = v.K_ID) INNER JOIN icv ON v.Vak_ID = icv.Vak_ID 
GROUP BY kon.Name) AS vak2 
GROUP BY vak.Konkursa_Nosaukums 

데이터 시트보기에서 확인하면 두 열이 동일합니다. "첫 번째"에는 6 개의 행이 있으며 12, 12, 6, 12, 6, 6 값이 있습니다. 같은 값은 "두 번째"열에 있습니다. 이 코드를 두 개로 나누고 테스트를 위해 두 개의 새 쿼리를 만들면 "첫 번째"열은 값 2,2,1,2,1,1을 표시하고 두 번째 쿼리는 값 3,3,1,2,1을가집니다. 1. 두 열은 따로 따로있을 때 올바른 값을 가지지 만 결합하면 알 수없는 값이 12와 같이 나타납니다 (12와 같은 수를 어디에서 가져올 지 전혀 알 수 없습니다). 줄을 끼워 넣을 때
어디에서 마지막 줄까지 vak.amount = vak2.amount2인지는 두 줄 모두에 2,2,1,2,1,1을 표시합니다. 나는 그것이 첫 번째 서브 쿼리 또는 무엇인가 걸리는 것 같아요.

서브 쿼리를 올바르게 작성하여 별도로 쓰는 경우와 동일한 값을 표시하는 방법은 무엇입니까?

+0

당신이 밖으로 찍은 .... –

+0

을 샘플 데이터 및 개별 서브 쿼리를 게시 할 수 apropriate 그룹에서 발생하는 생각 @ 여기 Nitin Midha는 두 가지 쿼리를 따로 따로 처리합니다. 먼저 하나 (FROM 가 kon.Name을 선택 [열 이름]으로 SELECT vak.Name, COUNT (vak.skaits)은, (/) (icv.CV_ID 카운트 (FROM 양 AS)) (icv.CV_ID 카운트 SELECT : 콘 INNER 내면은 번째 vak.Name BY VAK 그룹으로 v.Vak_ID, kon.Name)에서 v.Vak_ID = icv.Vak_ID ON GROUP ICV 가입) kon.Kon_ID v.Kon_ID = ON V 가입 kon.Name, COUNT (v.Vak_ID) AS 금액 2 KON INNER JOIN FROM KON_ID = v.Kon_ID GROUP BY KON.Name 처음으로 2,2,1,2,1,1이 COUNT 열에 표시됩니다. , 두 번째는 COUNT 열에 3,3,1,2,1,1을 표시합니다. – Rob

+0

조인 조건이 누락되어 있고 적절한 그룹에 있습니다. ... 내 대답을 확인하십시오. 이해가된다면 ... –

답변

0
SELECT vak.Name, vak.amount AS [First], vak2.amount2 AS [Second] 
FROM 
(SELECT kon.Name, (Count(icv.CV_ID)/Count(icv.CV_ID)) AS amount 
FROM (kon INNER JOIN v ON kon.K_ID = v.K_ID) INNER JOIN icv ON v.Vak_ID = icv.Vak_ID 
GROUP BY v.Vak_ID, kon.Name) AS vak, 
(SELECT kon.Name, COUNT(v.Vak_ID) AS amount2 
FROM (kon INNER JOIN v ON kon.K_ID = v.K_ID) INNER JOIN icv ON v.Vak_ID = icv.Vak_ID 
GROUP BY kon.Name) AS vak2 
WHERE vak.Name = van2.Name 
+0

내가 좋아할 때 COUNT 함수를 제거하고 결국 WHERE을 추가하면 오류가 표시됩니다. 집계 함수의 일부로 지정된 표현식 'First'를 포함하지 않는 쿼리를 실행하려면 연결해야합니다. – Rob

0

나는 당신이이 조인 조건 누락에 의해 ...

SELECT vak.Name, vak.amount AS [First], vak2.amount2 AS [Second] 
FROM 
(SELECT kon.Name, (Count(icv.CV_ID)/Count(icv.CV_ID)) AS amount 
FROM (kon INNER JOIN v ON kon.K_ID = v.K_ID) INNER JOIN icv ON v.Vak_ID = icv.Vak_ID 
GROUP BY v.Vak_ID, kon.Name) AS vak, 
(SELECT kon.Name, COUNT(v.Vak_ID) AS amount2 
FROM (kon INNER JOIN v ON kon.K_ID = v.K_ID) INNER JOIN icv ON v.Vak_ID = icv.Vak_ID 
GROUP BY kon.Name) AS vak2 
WHERE vak.Name = van2.Name 
관련 문제