2013-03-26 2 views
1

양식 제출을 기록하는 테이블이 있습니다. INNER JOIN SQL 명령 결과를 필터링하는 방법

userid 
record 
accountName 
accountNumber 

사용자가 양식을 제출

이 테이블은 각 개별 항목에 record 값으로 채워집니다 : 양식의 각 제출을 위해 다음과 같은 변수가있다. 즉, 값은 일반적으로 모두 record 값으로 연결됩니다. 사용자 INNER JOIN을 사용하여 userid, accountNameaccountNumber을 열로 표시하는 테이블에 결과를 필터링하려고합니다. 이 명령에 매우 가깝습니다.

SELECT t1.value AS number, t2.value AS name, t3.value AS userid 
FROM mytable AS t1 
INNER JOIN mytable AS t3 
INNER JOIN mytable AS t2 ON t1.record = t2.record 
WHERE t1.name = 'addAccountNumber' 
AND t2.name = 'addAccountName' 
AND t3.name = 'userid' 

유일한 문제는 결과가 항목 당 하나씩으로 제한되지 않는다는 것입니다. 여러 인스턴스가 테이블에 표시되고있는 것 같습니다.

나는 진술의 WHERE 부분에 약간의 편집이 필요하다고 생각한다. 결과가 이름 값에 반영되지 않고 결과를 필터링하지 못하는 것 같습니다. 이 문제를 해결하는 방법에 대한 제안 사항이 있으십니까?


업데이트 :

내가 여기에서 볼 수 있듯이 나는 단지 호출에서 두 개의 행을 포함 할 때 적절한 필터링 결과를 얻을 할 것을 추가해야합니다 : 보여 도움이 될 수 있습니다

SELECT t1.value AS accountNumber, t2.value AS accountName 
FROM mytable AS t1 
INNER JOIN mytable AS t2 
ON t1.record=t2.record WHERE t1.name='addAccountNumber' AND t2.name='addAccountName' 

생각했던 나는 온다. 따라서 일반적으로 문제가되는 변수를 추가하는 것과 관련이 있습니다.

+0

첫 번째 JOIN에 ON이 있어야하나요? –

+0

또는 from 문에 있어야합니다. – RandomUs1r

답변

2

필요한 것을 이해하는 데 어려움을 겪고 있습니다.하지만 아마도 이것이 문제 일 수 있습니다.

SELECT t1.value AS number, t2.value AS name, t3.value AS userid 

FROM mytable AS t1 

INNER JOIN mytable AS t3 ON t1.record = t3.record 

INNER JOIN mytable AS t2 ON t1.record = t2.record 

WHERE t1.name = 'addAccountNumber' 

AND t2.name = 'addAccountName' 

AND t3.name = 'userid' 
+0

THanks! 그게 :) – Presto