2013-07-05 23 views
0

我有一個包含電機名稱和電機描述的表格。有幾個相同名稱的電機有不同的描述。使用表中的第1列對colum2進行排序並將第1列用作標題

Example: 

motor_table 


NAME  DESCRIPTION 
Evinrude 90HP ETEC 
Evinrude 150HP ETEC 
Mercury 90HP 4/S 
Mercury 150HP 4/S 

我想循環遍歷表併爲每個不同名稱創建一個數組,但我不想讓名稱重複。所以電機名稱數組看起來像這樣。

$motor_names = array('Evinrude','Mercury'); 

然後,我想要用戶的數組顯示在這樣的表中的數據。

EVINRUDE 
90HP ETEC 
150HP ETEC 

MERCURY 
90HP 4/S 
150HP 4/S 

我一直在這裏約一個小時,但沒有任何運氣。

回答

1

這個查詢將給結果作爲逗號分隔的,那麼你可以使用爆炸函數來解析結果,

SELECT NAME, GROUP_CONCAT(DESCRIPTION) AS description 
    FROM motor_table GROUP BY name 
0

如果我理解你的問題正確,那麼你可以在你的查詢中使用GROUP BY條款:

SELECT * FROM motor_table GROUP BY name

0

這是一個有點複雜,但你可以在SQL查詢中做到這一點:

select name 
from ((select name, name as sort1, 0 as sort2 
     from motor_table 
    ) union all 
     (select description, name as sort1, 1 as sort2 
     from motor_table 
    ) 
    ) t 
order by sort1, sort2; 

這實際上沒有空行。你可以通過做:

select name 
from ((select name, name as sort1, 0 as sort2 
     from motor_table 
    ) union all 
     (select description, name as sort1, 1 as sort2 
     from motor_table 
    ) union all 
     (select '', name as sort1, 2 as sort2 
     from motor_table 
    ) 
    ) t 
order by sort1, sort2; 
0
<?php 
$array= array(
array('name' => 'Evinrude', 'description' => "90HP ETEC"), 
array('name' => 'Mercury', 'description' => "90HP 4/S"), 
array('name' => 'Mercury', 'description' => "150HP 4/S") 
); 

$motor_names = array('Evinrude','Mercury'); 
$data = array(); 
foreach($array as $row) 
{ 
    $data[$row['name']][] = $row['description']; 
} 


print_r($data); 

?> 

使用此代碼

OUTPUT:

Array ( 
     [Evinrude] => Array ([0] => 90HP ETEC) 
     [Mercury] => Array ([0] => 90HP 4/S [1] => 150HP 4/S) 
    ) 
相關問題