2014-02-15 3 views
0

각 속성을 속한 속성 아래에 배치하여 속성과 값을 함께 인쇄하는 방법은 무엇입니까? 하나의 속성과 아래에 여러 개의 값이 있습니다.값이있는 제품 속성 인쇄

//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%' 

편집 :

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; 
:
foreach ($attr_value as $val) 
{ 
echo $val['attribute'] ."<br>"; 

$values = $val['group_concat(`value`)']; 
$value = explode(",", $values); 
echo $value."<br>"; 
} 

답변

0

파일 1

for ($set = array(); $row = $result->fetch_assoc(); $set[] = $row); 

return $set; 

파일 2

당신은 group by을 원하는

또한 쿼리 전체에서 긴 테이블 이름을 반복하지 않도록 테이블 별칭을 추가했습니다.

group_concat()은 단일 문자열로 값을 연결합니다. 기본적으로 이러한 항목은 쉼표로 구분됩니다. SEPARATOR 키워드로 제어 할 수 있습니다.

+0

좋아, 이걸 알아 내려고했지만 먼저, 중복 되 고있어. 내가 pav.attribute_value_id로 그룹을 시도했는데, 그게 내가 처음 결과를 얻었 기 때문이긴하지만 작동하지 않습니다. 둘째로 나는 값을 출력하는 것처럼 보이지 않는다. EDIT를 한번보세요. – ethio

+0

@ethio. . . 이 쿼리를 시도 했습니까? 나는'pav.attribute_value_id'가 그 테이블에있는 각 행의 유일한 ID라고 생각합니다. 그것으로 모으는 것은 당신이 원하는 것을하지 않을 것입니다. –

+0

예, 서로 섞인 여러 속성의 값을 중지하고 중복을 중지하는 데 사용했습니다. pav.attribute_value_id는 특정 속성 및 값에 대한 attribute_value의 기본 키입니다. – ethio