Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql分组方式_Php_Mysql_Sql_Group By - Fatal编程技术网

php mysql分组方式

php mysql分组方式,php,mysql,sql,group-by,Php,Mysql,Sql,Group By,这是我的桌子 row | car_id | car_model | car_features | 1 1 CAR 1 Features 1 2 2 CAR 2 Features 2 3 2 CAR 2 Features 3 我想让它像 row | car_id | car_model | car_features | 1 1 CA

这是我的桌子

 row  | car_id | car_model | car_features |
  1      1          CAR 1      Features 1
  2      2          CAR 2      Features 2
  3      2          CAR 2      Features 3
我想让它像

 row  | car_id | car_model | car_features |
  1      1          CAR 1      Features 1
  2      2          CAR 2      Features 2, Features 3
这是我的php mysql脚本:

<?php
    $con = mysql_connect("localhost", "root", "root");
    mysql_select_db("car", $con);
    $format = mysql_query("SELECT c.* , p.*, d.*,f.* ,e.* FROM bsi_car_master c,bsi_car_type p, bsi_car_vendor d, bsi_selected_features f, bsi_car_features e WHERE c.car_type_id=p.id AND c.car_vendor_id=d.id AND c.car_id = f.car_id AND f.features_id = e.id");
    $row = 1;

    while($srow = mysql_fetch_array($format))
    {
        blah blah blah....
    }
?>
将GROUP_CONCAT与GROUP BY一起使用。试试这个-

SELECT `row`, `car_id`, `car_model`, GROUP_CONCAT(`car_features`, ',') 
FROM your_table GROUP BY `car_id`
将GROUP_CONCAT与GROUP BY一起使用。试试这个-

SELECT `row`, `car_id`, `car_model`, GROUP_CONCAT(`car_features`, ',') 
FROM your_table GROUP BY `car_id`

希望,很明显我不是PHP程序员,但这里有另一种方法可以做到这一点,而不必使用GROUP_CONCAT

<?php
/*
DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,car_id INT NOT NULL
,car_model VARCHAR(12) NOT NULL
,car_features VARCHAR(20) NOT NULL
);

INSERT INTO my_table VALUES
(1      ,1          ,'CAR 1','Features 1'),
(2      ,2          ,'CAR 2','Features 2'),
(3      ,2          ,'CAR 2','Features 3');
*/

require('path/to/mysqli/connection/stateme.nts');

$query = "
    SELECT id
         , car_id
         , car_model
         , car_features
      FROM my_table
     ORDER
        BY car_model;
    ";

$result = mysqli_query($db,$query);
 $car_id = 0;

 while($row = mysqli_fetch_assoc($result)){
 if ($car_id== $row['car_id']){
 echo  "  >".$row['car_features']."<br>\n";
 } else {
 echo $row['car_model']."<br>\n  >".$row['car_features']."<br>\n";
$car_id = $row['car_id'];
 }
 } // end of while loop

/* 
Outputs...

CAR 1
>Features 1
CAR 2
>Features 2
>Features 3
*/

?>

希望,很明显我不是PHP程序员,但这里有另一种方法可以做到这一点,而不必使用GROUP_CONCAT

<?php
/*
DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,car_id INT NOT NULL
,car_model VARCHAR(12) NOT NULL
,car_features VARCHAR(20) NOT NULL
);

INSERT INTO my_table VALUES
(1      ,1          ,'CAR 1','Features 1'),
(2      ,2          ,'CAR 2','Features 2'),
(3      ,2          ,'CAR 2','Features 3');
*/

require('path/to/mysqli/connection/stateme.nts');

$query = "
    SELECT id
         , car_id
         , car_model
         , car_features
      FROM my_table
     ORDER
        BY car_model;
    ";

$result = mysqli_query($db,$query);
 $car_id = 0;

 while($row = mysqli_fetch_assoc($result)){
 if ($car_id== $row['car_id']){
 echo  "  >".$row['car_features']."<br>\n";
 } else {
 echo $row['car_model']."<br>\n  >".$row['car_features']."<br>\n";
$car_id = $row['car_id'];
 }
 } // end of while loop

/* 
Outputs...

CAR 1
>Features 1
CAR 2
>Features 2
>Features 3
*/

?>

能给我举个例子吗…:噢,不要使用团体康卡特。只要修改你的循环。@草莓可以给我一些例子吗?可以给我一些例子…:噢,不要使用团体康卡特。只要修改你的循环,你能给我举个例子吗?