[英]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.