如何通过将每个值放在其所属的属性下来打印属性和值。所以一个属性和几个值在。
之下//i can have the array the normal way if it helps, like [0] => Red...
[attribute] => Array
(
[0] => Array
(
[Colour] => Red
)
[1] => Array
(
[Colour] => Blue
)
[2] => Array
(
[Colour] => Green
)
[3] => Array
(
[Size] => Small
)
[4] => Array
(
[Size] => Medium
)
[5] => Array
(
[Size] => Large
)
)
如果可以在查询中通过返回一个属性而不是多个属性以及随之而来的值来完成,那就太好了。但是我也希望通过打印一次数组键然后输入数值来看到这一点,我会给它+1。
SELECT `attribute`, `value`
FROM (`attribute_value`)
JOIN `product_attr_value` ON `product_attr_value`.`attribute_value_id` = `attribute_value`.`id`
JOIN `products` ON `products`.`id` = `product_attr_value`.`product_id`
WHERE `products`.`item_name` LIKE '%qwe2%'
编辑:
文件1
for ($set = array (); $row = $result->fetch_assoc(); $set[] = $row);
return $set;
file2的
foreach ($attr_value as $val)
{
echo $val['attribute'] ."<br>";
$values = $val['group_concat(`value`)'];
$value = explode(",", $values);
echo $value."<br>";
}
答案 0 :(得分:0)
您需要group by
:
SELECT attribute, group_concat(`value`)
FROM attribute_value av JOIN
product_attr_value pav
ON pav.attribute_value_id = av.id JOIN
products p
ON p.id = pav.product_id
WHERE p.`item_name` LIKE '%qwe2%'
group by attribute;
我还添加了表别名,以避免在整个查询中重复长表名。
group_concat()
会将值连接成一个字符串。默认情况下,它们用逗号分隔。您可以使用SEPARATOR
关键字控制它。