繁体   English   中英

如何在右表中的特定行上进行左连接?

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

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