2015-10-19 8 views
1

это мой столPHP MySQL группы по

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.... 
    } 
?> 
+4

Использовать group_concat –

+0

может показать мне пример ... :) – user3081581

+0

Aw, не используйте группу concat. Просто измените свой цикл. – Strawberry

ответ

3

Использование GROUP_CONCAT с GROUP BY. Попробуйте это -

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

спасибо ... его можно сделать так, чтобы он выглядел точкой? – user3081581

2
SELECT car_id,car_model,GROUP_CONCAT(car_features,',') 
FROM yourtable 
GROUP BY car_id,car_model; 
+0

спасибо ... его можно сделать так, чтобы он выглядел в форме точки? – user3081581

0
$format = mysql_query("SELECT c.* , p.*, d.*,f.* ,e.*,group_concat(`c.car_features`,',') as `carfeatures` 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 group by c.car_id"); 
0

Будем надеяться, что это довольно очевидно, что я не 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 
*/ 

?>