Как расположить результат 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']);
}
}
и теперь используйте эти массивы для отображения значений в переднем конце.