2012-08-28 75 views
0

我試圖製作標籤雲系統,並在「表」中輸入標籤名稱和「product_id」。 我做了這可能有多個相同的標籤每個人不同的產品。 我的問題是,當從表中回顯標籤時,它向我顯示所有標籤,這很好,但是重複的標籤在這個數目中。我只需要重複重複一次標籤,但我不知道如何製作。 這是和我的代碼,顯示和重複標籤。如何在回顯mysql查詢結果時忽略重複行

$id  = $_GET['catid']; 
$sql = "SELECT * FROM tags_group"; 
$result = mysql_query($sql) or die(mysql_error()); 
while ($row = mysql_fetch_array($result)) { 
    //echo $row['name']; 
    $id  = $row['id']; 
    $sql1 = "SELECT * FROM tags WHERE tag_group='$id'"; 
    $result1 = mysql_query($sql1); 
    while ($row1 = mysql_fetch_array($result1)) { 
     $name = $row1['tag_name']; 
     $sql2 = "SELECT * FROM tags WHERE tag_name='$name'"; 
     $resut2 = mysql_query($sql2); 
     $rows = mysql_num_rows($resut2); 

     echo $row1['tag_name'] . '(' . $rows . ')' . '<br>'; 


     // echo $row1['tag_name'].$rows.'<br>'; 
    } 
    echo '<br>'; 
} 
+1

它可能無助於回答你的問題,但你應該停止使用'mysql_ *'函數。他們正在被棄用。請使用[PDO](http://php.net/manual/en/book.pdo.php)(自PHP 5.1起支持)或[mysqli](http://php.net/manual/en/book)。 mysqli.php)(自PHP 4.1起支持)。如果您不確定要使用哪一個,請閱讀本文(http://www.deprecatedphp.com/mysql_/)。 – Matt

回答

2

您必須使用DISTINCT關鍵字就避免重複:

SELECT DISTINCT * FROM tags_group 

正如我在評論中提到以上,應停止使用mysql_*功能。他們正在被棄用。取而代之,使用PDO(自PHP 5.1起支持)或mysqli(自PHP 4.1起支持)。如果您不確定要使用哪一個,請致電read this article

UPDATE

它也像你使用嵌套查詢,而不是加入你的表和檢索結果。試試這個:

$id  = $_GET['catid']; 
$sql = "SELECT tags.tag_name, count(*) AS name_count FROM tags 
       INNER JOIN tags_group 
       ON tags.tag_group = tags_group.id 
       GROUP BY tag_name"; 
$result = mysql_query($sql) or die(mysql_error()); 
while ($row = mysql_fetch_array($result)) {   
    $name = $row['tag_name']; 
    $rows = $row['name_count']; 

    echo $name . '(' . $rows . ')' . '<br>'; 


    // echo $row['tag_name'].$rows.'<br>'; 
} 
echo '<br>'; 

在這裏我不使用DISTINCTGROUP BY允許您彙總計數的每個不同行(基於GROUP BY列)。

Take a look at this diagram更好地瞭解join的工作方式。

+0

PDO和mysqli的+1 –