2014-02-18 4 views
2

나는이를 조회 할 때 :왜 이것이 모호한가요?

$result = pg_query($dbconn, 
"SELECT w_bildurl, 
w_homepage_package_id AS whpi       

FROM adempiere.w_homepage_package       
LEFT JOIN adempiere.w_homepage_image ON adempiere.w_homepage_package.w_homepage_package_id = adempiere.w_homepage_image.w_homepage_package_id 
LEFT JOIN adempiere.w_bilder ON adempiere.w_homepage_image.w_bilder_id = adempiere.w_bilder.w_bilder_id 
WHERE sequence > 0 
ORDER BY sequence ASC"); 

나는

Query failed: ERROR: column reference 
"w_homepage_package_id" is ambiguous LINE 1: 
SELECT w_bildurl, w_homepage_package_id AS whpi 

내가 별칭을 추가하는 모호성을 방지 할 수 w_homepage_package_id하는 생각 얻을. 별칭을 LEFT JOIN에 추가해야합니까, 아니면 어떻게 쿼리에서 w_homepage_package_id를 얻을 수 있습니까?

SELECT tablealis.w_bildurl, 
tablealias.w_homepage_package_id AS whpi  

을 따를

+1

당신이 이해 생각하지 않습니다. 'w_homepage_package_id'라는 테이블이 여러 개 존재하기 때문에 어떤 테이블을 가져올 지 알지 못합니다. 그것 앞에 테이블 이름을 붙이십시오. – h2ooooooo

답변

3

에 속하는 그냥 테이블의 실제 테이블 별칭으로 tablealias을 변경 동일한 열이 하나 개 이상의 테이블에 있기 때문에 테이블 별칭을 앞에 추가, 그래서 변경해야 이 열이 속한 테이블을 지정하지 않았기 때문입니다.
다음 코드는 작동합니다 : 당신은 더 나은 사용을 위해 별칭을 사용할 필요가

SELECT w_bildurl, 
     adempiere.w_homepage_package.w_homepage_package_id AS whpi       
    FROM adempiere.w_homepage_package       
     LEFT JOIN adempiere.w_homepage_image 
        ON adempiere.w_homepage_package.w_homepage_package_id = adempiere.w_homepage_image.w_homepage_package_id 
     LEFT JOIN adempiere.w_bilder 
        ON adempiere.w_homepage_image.w_bilder_id = adempiere.w_bilder.w_bilder_id 
    WHERE sequence > 0 
ORDER BY sequence ASC 
4

당신은 그 열이

1

, 내가 코드 구현

<?php 

$result = pg_query($dbconn, 
"SELECT a.*,b.*,c.*       

FROM adempiere.w_homepage_package as a       
LEFT JOIN adempiere.w_homepage_image as b ON a.w_homepage_package_id = b.w_homepage_package_id 
LEFT JOIN adempiere.w_bilder as c ON b.w_bilder_id = c.w_bilder_id 
WHERE sequence > 0 
ORDER BY sequence ASC");