首页 > 解决方案 > 提取缺失数据的结果

问题描述

如何在查询atm中匹配和product_id 查询是只提取缺失的结果,但每个产品都有自己的记录,需要与该记录匹配

此查询工作正常,但与 product_id 不匹配

SELECT oc_ekstri_frontend.*,
      oc_ekstri_image.id as img_id,
      oc_ekstri_image.name
      FROM oc_ekstri_image
LEFT JOIN oc_ekstri_frontend ON (oc_ekstri_frontend.id = oc_ekstri_image.frontend_id)
LEFT JOIN oc_ekstri_frontend_view ON (oc_ekstri_frontend_view.ekstri_id = oc_ekstri_image.id)
      WHERE oc_ekstri_frontend.subcat_id = '" . $id . "'
     AND oc_ekstri_frontend_view.ekstri_id IS NULL

我将如何匹配当前的 product_id?我尝试了类似的方法来添加到查询中,但不起作用结果为空

AND oc_ekstri_frontend_view.product_id = '" . $product_id . "'

标签: mysqlselectleft-join

解决方案


在没有看到您的数据或预期输出的情况下,很难给出准确的答案。一种可能的解决方案可能是将您的新限制从WHERE子句移到ON子句:

SELECT
    f.*,
    i.id AS img_id,
    i.name
FROM oc_ekstri_image i
LEFT JOIN oc_ekstri_frontend f
    ON f.id = i.frontend_id
LEFT JOIN oc_ekstri_frontend_view v
    ON v.ekstri_id = i.id AND
       v.product_id = ?
WHERE
    f.subcat_id = ? AND
    v.ekstri_id IS NULL;

?在上述查询中使用占位符来建议您使用准备好的语句,而不是在参数中连接。如果您不知道 PHP 中的预处理语句是什么,您应该阅读它们


推荐阅读