2012-10-21 4 views
0

테이블 1의 "키"에 대해 테이블 ​​2의 값을 가져 오려고합니다. 동일한 이름의 출력이 혼합되지 않도록 "AS"를 사용합니다. 다음은 내가하고있는 일이지만 작동하지 않습니다 (때).동일한 열에 대해 여러 개의 값 - SQL INNER JOIN

SELECT pg_show.php,pg_show.tab,pg_text.text as title,pg_text.text as description 
FROM pg_show 
INNER JOIN pg_text ON pg_show.tit=title 
INNER JOIN pg_text ON pg_show.desc=description 
WHERE pg_show.url='value' 
LIMIT 0,1 

어떻게 해결할 수 있습니까?

편집 : 볼 수 있듯이


, 내가 올바른 방법으로 내 질문에 설명하지 않았다. 주어진 솔루션을 적용하면 오류가 발생합니다. "# 1054 - 'on clause' '에'pt1.tit '알 수없는 열이 있습니다. 아마 내 테이블의 구조가 도움이 될 것입니다.

pg_show

URL
PHP

DESC

pg_text



텍스트

아이디어 :

내가 호출 된 페이지 이름에 따라 PHP 파일을 실행합니다. 페이지 이름이 (URL 필드)은 사용자 언어에 따라 다를 수 있습니다. 전체 아이디어가 더 복잡하기 때문에 (httpdaccess URL 재 작성을 사용하고 싶지 않습니다.) 전화 할 수있는 모든 값을 저장해야합니다. 이 정확한 PHP 파일 (모든 가능한 URL 값).

반면에 페이지 제목과 설명을 표시해야합니다. 이를 위해 각 단어에 대해 (텍스트 필드) 값을 갖는 "CONSTANTS"테이블을 * (pg_text) * 만들었습니다. (lang 필드). 쿼리에 대해

:

내가 가야 구축을 위해 노력하고 쿼리 (알면서 URL 값) PHP 파일 이름과 값 가슴과 내림차순의(표 2에 텍스 필드) 필드의 첫 번째 테이블에 값으로 테이블 2에 해당 값을 가져 오는 데 필요한 "상수"이름이 있습니다.

+0

'텍스트'와 '설명'이 같은 것은 아닌가요? 같은 데이터에서 두 개의 조인을하는 이유는 아닙니다. –

+0

@MikeChristensen 테이블 "pg_text"테이블에는 두 개의 행 "key"와 "text"가 있습니다. 그리고 "pg_show.desc"와 "pg_show.tit"를 두 번째 테이블에있는 두 개의 regs와 연관시키고 싶습니다. 따라서 첫 번째 테이블에는 두 번째 다른 REGS와 동일한 열에 대한 참조가있는 두 개의 다른 열이 있습니다. – Kenedy

+0

나는 이해한다고 믿는다. 내 대답을 아래에 추가했습니다. –

답변

2

잘 모르겠지만 질문을 올바르게 읽었습니다. 기본적으로 조인 된 테이블에 다른 별칭을 지정해야합니다.예를 들면 :

SELECT pg_show.php, pg_show.tab, pt1.text as title, pt2.text as description 
FROM pg_show 
INNER JOIN pg_text pt1 ON pg1.key = pg_show.tit 
INNER JOIN pg_text pt2 ON pg2.key = pg_show.desc 
WHERE pg_show.url='value' 
LIMIT 0,1 

pg_text 후 이름은 당신이 당신의 select 절에 대해 얘기하고 참여하는 명확합니다.

+0

오류가 발생합니다. 내가하는 일을 모두 설명하기 위해 내 질문을 업데이트했습니다. 죄송합니다. 촬영 한 시간에 대해 감사드립니다. – Kenedy

+1

좋습니다. 그래서'pg_txt.key'는'pg_show''''' 또는''desc'' 값을 가지고 있습니다? 그렇다면이 두 열에 가입하십시오. 내 대답을 편집했습니다. –

+0

고맙습니다. INNER JOIN의 새로운 기능을 가르쳐 주셨습니다. – Kenedy