php的subselect错误——是否可以用LEFT JOIN来代替


error with php subselect - Is there anyway to do a LEFT JOIN here instead?

我得到一个错误与这个SUBSELECT ?

$common_dimensions_query = "
SELECT *
FROM main_products_common_dimensions d
WHERE d.product_id = (SELECT id FROM main_products WHERE abbreviation = '".$product."'";

错误:

警告:pg_query() [function。pg-query]: Query failed: ERROR: syntax ERROR at end of input LINE 4:…(SELECT id FROM main_products WHERE缩写= 'banner' ^ in

有没有办法在这里做一个LEFT JOIN代替?

使用JOIN代替double SELECT的版本:

"SELECT *
FROM main_products_common_dimensions d
JOIN main_products p ON d.product_id = p.id
WHERE p.abbreviation = '$product'"

根据语法,您应该使用IN而不是=。正确的语法应该是

$common_dimensions_query = "SELECT * FROM main_products_common_dimensions d WHERE d.product_id IN (SELECT id FROM main_products WHERE abbreviation = '".$product."');";

是的,您可以使用JOIN来代替。

你需要关闭括号

$common_dimensions_query = "SELECT * FROM main_products_common_dimensions d ".
                           " WHERE abbreviation = '".$product."')";
当然,我强烈建议一般不要使用这个查询。你不应该在查询中插入字符串,而应该使用预处理语句。