2013-02-04 69 views
0

我有一個MySql表,我想按類型列出東西並插入標題。我會使用什麼類型的查詢?插入列作爲類型​​的標題

從這個:

| Fluffy | Harold | cat  | f | 1993-02-04 | NULL  | 
| Claws | Gwen | cat  | m | 1994-03-17 | NULL  | 
| Buffy | Harold | dog  | f | 1989-05-13 | NULL  | 
| Fang  | Benny | dog  | m | 1990-08-27 | NULL  | 
| Bowser | Diane | dog  | m | 1979-08-31 | 1995-07-29 | 
| Chirpy | Gwen | bird  | f | 1998-09-11 | NULL  | 
| Whistler | Gwen | bird  | f | 1997-12-09 | NULL  | 
| Slim  | Benny | snake  | m | 1996-04-29 | NULL  | 
| Dalli | Alli | canine  | m | 2001-12-20 | NULL  | 
| Tara  | David | canine  | f | 2002-05-17 | NULL  | 
| Mimi  | Alli | guinea pig | m | 2004-05-17 | NULL  | 

要這樣:

<h2>Cat</h2> 

<ul> 
<li>Fluffy</li> 
<li>Claws</li> 
</ul> 

<h2>Dog</h2> 

<li>Buffy</li> 
<li>Fang</li> 
<li>Bowser</li> 
</ul> 

+1

可能希望通過type'做一個'順序,那麼你將需要構造用php列表。 – Pitchinnate

+0

嗯......可能它們是Canidae家族的,所以它們實際上可能是狼或狼或者那種性質的東西? – nontoxicjon

+0

在PHP中執行兩個循環。一種:獲得DISTINCT類型的動物,其次:在每種類型中顯示所有具有這種類型的動物 – Moseleyi

回答

0

不要試圖用SQL來做所有這些事情(只要做一個標準的選擇查詢),使用PHP對結果進行分組,然後呈現它。做到這一點的最佳方法是讓一個對象爲你做分組,因爲你可能會多次需要它。例如,你的類可以是這個樣子:

<?php 
class Arrays 
{ 
    public static function group($array,$key) 
    { 
     if(NULL == $array) 
      return NULL; 

     $grouped = NULL; 

     foreach($array as $item) 
     { 
      $grouped[$item[$key]][] = $item; 
     } 

     return $grouped; 
    } 
} 
?> 

而且你的使用情況可能是這樣的:

<?php 
$result = ...; // The result of your database query. 

$grouped_by_type = Arrays::group($result,"type"); 

foreach($grouped_by_type as $type => $group) 
{ 
    echo "<h2>".ucwords($type)."</h2>"; 
    echo "<ul>"; 

    foreach($group as $animal) 
    { 
     echo "<li>".$animal['first_name']."</li>"; // Assumes the query brought back first_name... 
    } 

    echo "</ul>"; 
} 
?> 
0

你的第一個查詢將是:

SELECT DISTINCT type FROM table ORDER BY type ASC 

隨着你的PHP,我肯定你可以從這個查詢中得到結果並通過它循環。下一個是把另一個查詢,讓你屬於電流型動物的名單內循環:

SELECT name FROM table WHERE type='$type' ORDER BY name ASC 

$type僅僅是可變的保持電流型。我假定了列和表名,所以請將其改爲適合您的代碼。

+0

如果您有1000種動物類型,您將運行1001個數據庫查詢。它將解決問題,但這不是一個好的解決方案,至少在99%的情況下不適用。 – Tom

+0

我沒有發佈任何PHP代碼。我希望那個人要求先走一步.. – Moseleyi

+0

也許最好把這個添加爲評論而不是答案然後 - 我不知道,我是新來的所以我不知道最佳實踐是什麼。鑑於這是現在被接受的答案,OP(和其他人閱讀)大概會按照你所說的做 - 並且可能將相同的解決方案應用於他/她遇到的其他問題,哪些IMO不正確! :) – Tom