2017-09-06 74 views
-1
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查询来获得这样的结果吗?如何安排SQL查询结果与列组?

我需要前端输出波纹管:

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

或如何可以存储导致基于产品类型多dimational阵列。任何人都可以帮忙

大谢谢先进!

+0

它是一种树结构,而不是表结构。 –

+0

@ShaunakShukla,我只是想要所有的产品与project_type列出的目的安排。 –

+1

我有SQL查询解决方案,我需要一个担心,从哪里获得产品列? –

回答

0

我从我们的讨论的解决方案,它可以帮助你。

您的查询会象下面这样:

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>"; 
    } 
} 
+0

可以任何人解释,谁给我负面?为什么? –

1

尝试使用此

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

让我知道,如果它与否。

+0

感谢您的回答,我之前试过GROUP BY不适合我 –

+0

您需要尝试GROUP BY,如果您在group_by上操作,那么它是错误的.https://www.w3schools.com/sql/trysql.asp?filename = trysql_select_groupby引用这个,如果它有帮助:) –

+0

在我看来,这不是一个明智的解决方案 – Strawberry

0

你取这个查询的在$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']); 
    } 
} 

和现在使用此阵列在前端来显示的值。

+0

这是相当不切实际 – Strawberry

2

获取结果和循环通过它来获得所需的结果

$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); 
1

现在,我的问题是如何根据产品类型,以获得产品的名单。 有没有办法用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 
} 
+0

我没有得到你为什么取行?我试过这显示未定义的索引product_type和产品。 –

+0

@GhanshyamBhava:对不起我现在修改 –

+0

Yah @akshay,这个作品..谢谢哥们:) –