[英]How to make left join on specific rows in right table?
我的网站可能有用户的个人价目表。 当我在所有产品表上离开连接导入的产品表时,我不知道将WHERE
放在WHERE
,它只会在右表的特定行(记录的用户行)上进行左连接。
我需要在 opencart 中执行此操作,但没关系,这只是 SQL
$sql = "SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON
(p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "import i ON (p.ean = i.ean_code) WHERE
i.import_id = '" . (int)$query->row['import_id'] . "'";
我不知何故需要先在导入表上执行WHERE
,但在上面的示例中,它是在之后执行的。 我必须执行 2 个查询吗?
尽可能使用参数。 您需要将条件移动到on
子句:
SELECT *
FROM " . DB_PREFIX . "product p LEFT JOIN
" . DB_PREFIX . "product_description pd
ON p.product_id = pd.product_id LEFT JOIN
" . DB_PREFIX . "import i
ON p.ean = i.ean_code AND
i.import_id = ?
您还应该选择显式的列名。 这在LEFT JOIN
尤为重要,因为表共享列名(至少是product_id
)并且您不知道应用程序代码中的“product_id”引用了哪个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.