2014-05-17 3 views
1

제품 데이터베이스가 있으며 각 제품에 하나 이상의 태그가 있습니다. 예를 들어, 내 쿼리 결과는 다음과 같습니다fetch_assoc()의 PHP 고유 값

//Query results 
product_id tag 
12345  Kitchen 
12345  Mixer 
12345  Baking 

내가 특정 제품에 대한 모든 태그를 표시 한 번만 제품을 나열 할 수 있습니다 어떻게 내 출력이 같은 있도록 : 현재

Product ID: 12345 
Tags: Kitchen Mixer Baking 

, 나는 'fetch_assoc()'을 사용하고 모든 것을 표시하는 행을 반복합니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까?

$sql = <<<SQL 
    SELECT p.product_id, t.tag 
    FROM products p 
    JOIN tags t 
    ON p.product_id = t.product_id 
    WHERE p.product_id='12345' 
SQL; 

$db = new mysqli('localhost', 'user', 'password', 'dbname'); 

if($db->connect_errno > 0){ 
    die('Unable to connect to database [' . $db->connect_error . ']'); 
} 

if(!$result = $db->query($sql)){ 
    die('There was an error running the query [' . $db->error . ']'); 
} 

while($row = $result->fetch_assoc()){ 
    echo $row['product_id'] . '<br>'; 
    echo $row['tag'] . '<br>'; 
} 

답변

1

사용 GROUP_CONCAT() 기능 :

SELECT p.product_id, GROUP_CONCAT(t.tag) 
FROM products p 
JOIN tags t 
ON p.product_id = t.product_id 
WHERE p.product_id='12345' 
GROUP BY p.product_id 
+1

감사

다음은 내 현재 코드입니다! 그 정도로 간단했다. – user3647886