繁体   English   中英

为什么这个含糊不清?

[英]Why is this ambiguous?

当我查询这个:

$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     

只需使用这些列所属的表的实际表别名更改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

你必须使用别名才能更好地使用,我已经实现了你的代码

<?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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM