2010-02-22 5 views
1

저는 SQL에 익숙하지 않으며 데이터를 보관하는 두 개의 테이블 (Adodb를 사용하고 있습니다)이 있습니다. 그들은 둘을 함께 연결하는 키를 가지고 있으므로 두 번째 테이블에 상위 ID가있는 경우 첫 번째 테이블에서 이름을 선택하려고했습니다. 나는 다음을 사용하고있다 :Adodb : Postgresql은 두 테이블에서 선택 하나 결과 세트를 하나만 반환합니다.

$db->GetCol("SELECT x_ast.name FROM x_ast, x_ast_tree WHERE x_ast_tree.parent='$parent_id'"); 

올바른 데이터가있는 배열을 반환하지만 두 번있다.

Array 
(
    [0] => Trash 
    [1] => Users 
    [2] => admin 
    [3] => Trash 
    [4] => Users 
    [5] => admin 
) 

이 어떻게 다른 테이블의 데이터를 기반으로 하나 개의 테이블에서 필드를 선택할 수 있지만 하나 개의 결과 집합을 반환 : (나는 그것을 요구하기 때문에 두 테이블에서 온 가정)? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

1

문제는 두 테이블을 조인 할 기준을 설정하지 않았기 때문에 교차 조인을하는 것입니다.

SELECT x_ast.name 
FROM x_ast 
INNER JOIN x_ast_tree 
    ON x_ast.somefield=x_ast_tree.somefield 
WHERE x_ast_tree.parent='$parent_id' 
+0

에서 살펴보고, 그 일을! 나는 가입에 대해 알고 있었고, 아직 그들을 이해하지 못했습니다. 고맙습니다! –

관련 문제