sql - Prestashop 模块 SQL 查询以从特定特征值中获取 id_products
问题描述
我目前正在使用 prestashop 上的一个名为“Leo Parts Filter”的模块,该模块在数据库“ps_leopartsfilter_product”中按品牌、型号、年份和设备对 id_products 进行排序。
当我在此表中调用具有 id_product 的设备时,prestashop 会显示此 id_product。
public static $definition = array(
'table' => 'leopartsfilter_product',
'primary' => 'id_product',
'multilang' => false,
$sql = 'SELECT * FROM `' . _DB_PREFIX_ . 'leopartsfilter_product` WHERE 1=1 ';
if ($id_product != null && (int) $id_product) {
$sql .= ' AND id_product =' . (int) id_product;
}
我想改变调用 id_product 的方式,而不是按照这种方式只调用这个 id_product :
我想查询 feature_id = 212 和 feature_value_lang = id_product 的所有产品。
我尝试调整此查询,但无法使其正常工作(没有数据显示)
SELECT id_product, fl.name, value, pf.id_feature
FROM '._DB_PREFIX_.'feature_product pf
LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature =212 AND fl.id_lang = '.(int)$context->language->id.')
LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.(int)$context->language->id.')
LEFT JOIN '._DB_PREFIX_.'feature f ON (f.id_feature = pf.id_feature)
'.Shop::addSqlAssociation('feature', 'f').'
WHERE fvl.`value` = '['id_product']'
GROUP BY id_product
ORDER BY f.position ASC
';
我不擅长 SQL,所以不要怪我,我通过自己的方式学到了一切,并且我尝试建立自己的公司网站,这个模块就是我需要完成的全部。
如果有人想要一些钱来寻求帮助,我愿意给予奖励以使其发挥作用。
谢谢
解决方案
您的第二个查询与 Leo Parts Filter 模块无关,因为它只查询原生 Prestashop 功能表,而不是 Leo 模块本身的那些,所以您的请求不是很清楚。
如果你需要依赖基本特征,你必须清楚id特征/id特征值和id产品之间的关系都在ps_feature_product表中,所以如果你想要id_feature_value = 212的产品你只需要一个简单的
SELECT id_product FROM ps_feature_product WHERE id_feature_value = 212;
推荐阅读
- javascript - 中断并重新开始 D3 中的转换
- ios - AWS IOT 连接在 IPAD OS v12.1.1 上关闭
- angular - 角度2垫选择最小值小于最大值
- sql - JSON 表头格式
- spring - 禁用 Spring Boot 2 默认指标
- r - 使用 httr 为列表中的每个项目发送 POST 到 API
- dart - Flutter Streams,如何从流中访问先前发出的数据
- c# - Xamarin 表格网格定位
- java - 尝试调用虚拟方法'java.lang.String java.util.HashSet.toString()。获取空指针异常
- python - 使用 tkinter 将 txt 文件加载到列表框