Array
(
[0] => Array
(
[attribute_id] => 49
[name] => Код Viega
[text] => 746827
)
[1] => Array
(
[attribute_id] => 40
[name] => Ду, дюйм
[text] => 1/2
)
[2] => Array
(
[attribute_id] => 21
[name] => Материал корпуса
[text] => Бронза кремниевая
)
[3] => Array
(
[attribute_id] => 23
[name] => Материал шара
[text] => Сталь нержавеющая
)
[4] => Array
(
[attribute_id] => 13
[name] => Применение
[text] => Водоснабжение, теплоснабжение
)
[5] => Array
(
[attribute_id] => 15
[name] => Присоединение
[text] => Резьба
)
)
Array
(
[0] => Array
(
[attribute_id] => 49
[name] => Код Viega
[text] => 746829
)
[1] => Array
(
[attribute_id] => 40
[name] => Ду, дюйм
[text] => 3/4
)
[2] => Array
(
[attribute_id] => 21
[name] => Материал корпуса
[text] => Бронза кремниевая
)
[3] => Array
(
[attribute_id] => 23
[name] => Материал шара
[text] => Сталь нержавеющая
)
[4] => Array
(
[attribute_id] => 13
[name] => Применение
[text] => Водоснабжение, теплоснабжение
)
[5] => Array
(
[attribute_id] => 15
[name] => Присоединение
[text] => Резьба
)
)
Array
(
[0] => Array
(
[attribute_id] => 21
[name] => Материал корпуса
[text] => Бронза кремниевая
)
[1] => Array
(
[attribute_id] => 23
[name] => Материал шара
[text] => Сталь нержавеющая
)
[2] => Array
(
[attribute_id] => 13
[name] => Применение
[text] => Водоснабжение, теплоснабжение
)
[3] => Array
(
[attribute_id] => 15
[name] => Присоединение
[text] => Резьба
)
)
Почему ДВА массива в первом примере? А не в одном?
product_attribute` (
`product_id` int(11) NOT NULL,
`attribute_id` int(11) NOT NULL,
`language_id` int(11) NOT NULL,
`text` text NOT NULL
у товаров есть общие значения для всей группы и значения уникальные для каждого товара
Вот этот момент нужно(лично мне) допонять :)
Каким образом понимается, что "у товаров есть общие значения для всей группы" ?
Человеческим языком если...нужно же вывести те характеристики, которые ОДИНАКОВЫЕ У ВСЕХ В ДАННОМ РАЗДЕЛЕ (grup_id) ? Так же?)
SELECT a.attribute_id, ad.name, pa.text FROM product_attribute pa
LEFT JOIN attribute a ON (pa.attribute_id = a.attribute_id)
LEFT JOIN attribute_description ad ON (a.attribute_id = ad.attribute_id)
WHERE pa.product_id = '" . (int)$result['product_id'] . "' AND a.attribute_group_id = '" . (int)$product_attribute_group . "'
AND ad.language_id = '" . (int)$config_language_id . "' AND pa.language_id = '" . (int)$config_language_id . "' ORDER BY a.sort_order
SELECT a.attribute_id, ad.name, pa.text
FROM product_attribute pa
LEFT JOIN products AS `P` ON `pa`.`product_id` = `P`.`id`
LEFT JOIN attribute a ON (pa.attribute_id = a.attribute_id)
LEFT JOIN attribute_description ad ON (a.attribute_id = ad.attribute_id)
WHERE P.grup_id = 777
AND a.attribute_group_id = '" . (int)$product_attribute_group . "'
AND ad.language_id = '" . (int)$config_language_id . "'
AND pa.language_id = '" . (int)$config_language_id . "'
GROUP BY `pa`.`attribute_id`, `pa`.`text`
HAVING COUNT(*) > 1
ORDER BY a.sort_order
Вы пытаетесь по каждому product_id получать "что-то" в своём запросе...а из задачи(как я понял) нужно по всем товарам в этом grup_id вытащить характеристики одинаковые...
В моём запросе сразу по grup_id это предполагается вытащить...сразу для данного раздела по всем товарам...
совершенно непонятно, что в вопросе делает PHP.
Указываете точную версию СУБД.
Выкладываете полные CREATE TABLE всех таблиц
product` (
`product_id` int(11) NOT NULL,
`model` varchar(64) NOT NULL,
`sku` varchar(64) NOT NULL,
`grup_id` varchar(128) NOT NULL,
`quantity` int(4) NOT NULL DEFAULT 0,
`stock_status_id` int(11) NOT NULL,
`image` varchar(255) DEFAULT NULL,
`manufacturer_id` int(11) NOT NULL,
`shipping` tinyint(1) NOT NULL DEFAULT 1,
`price` decimal(15,4) NOT NULL DEFAULT 0.0000,
`weight` decimal(15,8) NOT NULL DEFAULT 0.00000000,
`weight_class_id` int(11) NOT NULL DEFAULT 0,
`length` decimal(15,8) NOT NULL DEFAULT 0.00000000,
`width` decimal(15,8) NOT NULL DEFAULT 0.00000000,
`height` decimal(15,8) NOT NULL DEFAULT 0.00000000,
`length_class_id` int(11) NOT NULL DEFAULT 0,
`subtract` tinyint(1) NOT NULL DEFAULT 1,
`minimum` int(11) NOT NULL DEFAULT 1,
`sort_order` int(11) NOT NULL DEFAULT 0,
`status` tinyint(1) NOT NULL DEFAULT 0,
`viewed` int(5) NOT NULL DEFAULT 0,
`date_added` datetime NOT NULL
)
product_attribute` (
`product_id` int(11) NOT NULL,
`attribute_id` int(11) NOT NULL,
`language_id` int(11) NOT NULL,
`text` text NOT NULL
)
attribute` (
`attribute_id` int(11) NOT NULL,
`attribute_group_id` int(11) NOT NULL,
`sort_order` int(3) NOT NULL
)
attribute_description` (
`attribute_id` int(11) NOT NULL,
`language_id` int(11) NOT NULL,
`name` varchar(64) NOT NULL
)
Проконтролировать работоспособность - обязательно
Выкладываете пример данных в виде INSERT INTO
Можете сразу создать online fiddle и дать ссылку.
Выкладываете требуемый результат для именно этих данных. С подробным пояснением по практически каждой строке результата - "здесь так, потому что ...".
не поняла INSERT чего ?
к сожалению не знаю что это такое
выше вроде все объяснено, что как и почему или что то конкретно не понятно по вводным данным и получению результата
$ar1 = [
['a' => 1, 'b' => 2],
['a' => 2, 'b' => 11],
['a' => 3, 'b' => 12],
];
$ar2 = [
['a' => 1, 'b' => 2],
['a' => 2, 'b' => 11],
['a' => 3, 'b' => 13],
];
$hashedArray1 = [];
foreach($ar1 as $ar) {
$hashedArray1[json_encode($ar)] = $ar;
}
$hashedArray2 = [];
foreach($ar2 as $ar) {
$hashedArray2[json_encode($ar)] = $ar;
}
var_dump(array_intersect_key($hashedArray1, $hashedArray2));