возможно не могу верно сформулировать оттого у самого и не получается сделать выборку имеется таблица Код (Text): id_feature id_product id_feature_value 12 14500 135 13 14500 185 14 14500 107 15 14500 180 16 14500 360 в ней множество таких продуктов необходимо получить id_product с такими же id_feature и id_feature_value как у 14500 но не все,а только те id_feature которых мы задаем. на php изначально набросал вот так, как бы это все дело сократить? Код (PHP): $idFeature1 = 12; $idFeature2 = 13; $idFeature3 = 11; $productId = 14500; $idValueFeature1 = Db::getInstance()->executeS('SELECT `id_feature_value` FROM `'._DB_PREFIX_.'feature_product` WHERE `id_product` = '.$productId.' AND `id_feature` = '.$idFeature1.''); $idValueFeature2 = Db::getInstance()->executeS('SELECT `id_feature_value` FROM `'._DB_PREFIX_.'feature_product` WHERE `id_product` = '.$productId.' AND `id_feature` = '.$idFeature2.''); $idValueFeature3 = Db::getInstance()->executeS('SELECT `id_feature_value` FROM `'._DB_PREFIX_.'feature_product` WHERE `id_product` = '.$productId.' AND `id_feature` = '.$idFeature3.''); $idSimilarProduct = Db::getInstance()->executeS('SELECT DISTINCT `id_product` FROM `'._DB_PREFIX_.'feature_product` WHERE `id_feature_value` IN ('.$idValueFeature1[0]["id_feature_value"].', '.$idValueFeature2[0]["id_feature_value"].', '.$idValueFeature3[0]["id_feature_value"].') AND `id_feature` IN ('.$idFeature1.', '.$idFeature2.', '.$idFeature3.') ');
проскролить вниз и увидеть как ты в другом запросе не стесняешься не делать три запроса а делаешь один
попробовал массу вариантов, однако так и не пришел к толковому вот например: Код (PHP): $idSimilarProduct = Db::getInstance()->executeS('SELECT DISTINCT fp.`id_product` FROM `' . _DB_PREFIX_ . 'feature_product` fp WHERE `id_feature_value` IN (SELECT fv.`id_feature_value` FROM `' . _DB_PREFIX_ . 'feature_product` fv WHERE fv.`id_product` = ' . $productId . ' AND fv.`id_feature` IN (' . $idFeature1 . ', ' . $idFeature2 . ', ' . $idFeature3 . '))'); или Код (PHP): $idSimilarProduct = Db::getInstance()->executeS('SELECT DISTINCT fp.`id_product` FROM `' . _DB_PREFIX_ . 'feature_product` fp INNER JOIN `' . _DB_PREFIX_ . 'feature_product` fp1 ON fp1.`id_feature_value` = fp2.`id_feature_value` WHERE fp.`id_product` = fp1.`id_product` AND fp1.`id_feature` = ' . $idFeature1 . ' OR fp1.`id_feature` = ' . $idFeature2 . ' OR fp1.`id_feature` = ' . $idFeature3 . ' '); выборка происходит но не верно вот бестолковый но пример необходимой работоспособности Код (PHP): $idFeature1 = 12; $idFeature2 = 13; $idFeature3 = 11; $productId = Tools::getValue('id_product'); $idValueFeature1 = Db::getInstance()->executeS('SELECT `id_feature_value` FROM `'._DB_PREFIX_.'feature_product` WHERE `id_product` = '.$productId.' AND `id_feature` = '.$idFeature1.''); $idValueFeature2 = Db::getInstance()->executeS('SELECT `id_feature_value` FROM `'._DB_PREFIX_.'feature_product` WHERE `id_product` = '.$productId.' AND `id_feature` = '.$idFeature2.''); $idValueFeature3 = Db::getInstance()->executeS('SELECT `id_feature_value` FROM `'._DB_PREFIX_.'feature_product` WHERE `id_product` = '.$productId.' AND `id_feature` = '.$idFeature3.''); $idSimilarProduct1 = Db::getInstance()->executeS('SELECT DISTINCT fp.`id_product` FROM `'._DB_PREFIX_.'feature_product` fp INNER JOIN `' . _DB_PREFIX_ . 'stock_available` sa ON fp.`id_product` = sa.`id_product` AND sa.`quantity` >0 WHERE `id_feature_value` = '.$idValueFeature1[0]["id_feature_value"].' AND `id_feature` = '.$idFeature1.''); $idSimilarProduct2 = Db::getInstance()->executeS('SELECT DISTINCT fp.`id_product` FROM `'._DB_PREFIX_.'feature_product` fp INNER JOIN `' . _DB_PREFIX_ . 'stock_available` sa ON fp.`id_product` = sa.`id_product` AND sa.`quantity` >0 WHERE fp.`id_feature_value` = '.$idValueFeature2[0]["id_feature_value"].' AND `id_feature` = '.$idFeature2.''); $idSimilarProduct3 = Db::getInstance()->executeS('SELECT DISTINCT fp.`id_product` FROM `'._DB_PREFIX_.'feature_product` fp INNER JOIN `' . _DB_PREFIX_ . 'stock_available` sa ON fp.`id_product` = sa.`id_product` AND sa.`quantity` >0 WHERE fp.`id_feature_value` = '.$idValueFeature3[0]["id_feature_value"].' AND `id_feature` = '.$idFeature3.''); и сравнить массивы