Как расположить результат SQL-запроса с группой столбцов?

SELECT Product_type FROM product INNER JOIN product Product_type.typeid = product.pid
I have this sql query result list. This is exactly what i need.

--------------------------
Product_type  | Product
--------------------------
ProductType 1 | Poduct A
ProductType 1 | Poduct B
ProductType 1 | Poduct C
ProductType 1 | Poduct D
ProductType 2 | Poduct E
ProductType 2 | Poduct F
ProductType 2 | Poduct G
--------------------------

Теперь мой вопрос заключается в том, как получить список продуктов на основе типа продукта. Есть ли способ получить такой результат с помощью SQL-запроса?

Мне нужен вывод интерфейса, как показано ниже:

ProductType 1
    | Product A
    | Product B
    | Product C
    | Product D
ProductType 2
    | Product E
    | Product F
    | Product G

Или как я могу сохранить результат в многомерном массиве на основе product_type. Может кто-нибудь помочь.

Большое спасибо заранее!

5 ответов

Решение

Я получил решение из нашей дискуссии, оно может вам помочь.

Ваш запрос будет выглядеть так:

SELECT product_type.product_type, GROUP_CONCAT(products.product) AS pros FROM product_type LEFT JOIN products ON product_type.id = products.product_type_id GROUP BY product_type.id

Это даст вам вывод, как показано ниже:

$result_arr = array(
                array(  'product_type'=>'ProductType 1',
                        'pros'=>'product A, product B, product C'),
                array(  'product_type'=>'ProductType 2',
                        'pros'=>'product D, product E, product F')
                );

Затем вы можете манипулировать этим выводом, как показано ниже:

foreach($result_arr as $key=>$val){
    echo "<b>".$val['product_type']."</b><br/>";
    $products = explode(',',$val['pros']);
    foreach($products as $product){
        echo $product."</br>";
    }
}

Получить результат и пройтись по нему, чтобы получить желаемый результат

$sql = "SELECT Product_type FROM product INNER JOIN product Product_type.typeid = product.pid";

$result = $conn->query($sql);

while ($row = $result->fetch_assoc()) {

          $newarray[$row['product_type']][] = $row['product']; 

        }




 print_r($newarray);

Теперь мой вопрос заключается в том, как получить список продуктов на основе типа продукта. Есть ли способ получить такой результат с помощью SQL-запроса? Или как я могу сохранить результат в многомерном массиве на основе product_type. Может кто-нибудь помочь.

$mysqli = new mysqli("localhost", "my_user", "my_password", "mydb");
$query = "put your query string here";

$output = array();

// From your sql_query result list
if ($result = $mysqli->query($query)) 
{

   /* fetch object array */
   while ($row = $result->fetch_assoc()) 
   {
         if(isset( $output[ $row['product_type'] ] ))
         {
                 $output[ $row['product_type'] ][] = $row['product'];
                 continue;
         }
         $output[ $row['product_type'] ] = array( $row['product']  );
   }
         print_r( $output ); // Here is your multi-dimational array
}

Попробуйте использовать это

SELECT Product_type FROM product INNER JOIN product Product_type.typeid = product.pid GROUP BY Product_type;

Дайте мне знать, если это работает или нет.

Вы получаете результаты этого запроса в $row а потом,

$product_type1 = array();
$product_type2 = array();
while ($row) {
    if($row['Product_type'] == '1') {
        array_push($product_type1, $row['Product']);
    }
    else if($row['Product_type'] == '2') {
        array_push($product_type2, $row['Product']);
    }
}

и теперь используйте эти массивы для отображения значений в переднем конце.

Другие вопросы по тегам