2009-07-23 11 views
0

をグループ化するための印刷データを一度だけ:のMySQL:各私はPHP/MySQLの中でコーディングし、製品および製品グループのデータをフェッチするには、次のクエリを持ってい

SELECT products.id,products.name,product_groups.id,product_groups.name 
FROM products 
INNER JOIN product_groups 
ON products.id=product_groups.id 
WHERE products.name LIKE '%foobar%' 
ORDER by product_groups.id ASC 

だから、このクエリは、製品を取り出し、製品によってそれらを注文グループ。私がしたいのは、製品グループごとにproduct_groups.nameを1回だけ表示することです。だから私が10個の靴製品を持っていても、グループ名 "靴"は一度しか表示されません。

私は結果をプリントアウトするには、以下のPHPを使用してい

while ($data = mysql_fetch_array($result)) 

答えて

1

もしあなたがMySQLのクエリでそれをしたいのであれば、正直言ってそれは価値があるよりもトラブルです。 1つは、構文は、(私が思い出したように)グループ名が各グループの先頭にリストされていることです。結果は行として扱われるので、グループ名は他のすべての列がNullである行のように扱われるので、if文を実行する必要があるため、PHPスクリプトに時間や労力を本当に節約することはできませんグループデータの代わりにグループ名にヒットしたときにキャッチします。

PHP whileループで処理したい場合は、Johanが正しいトラックにあります。同様の状況で次のように使用します。

明らかに、エコーデータは、必要な方法でデータの部分をエコーするように設定されます。しかし、$ prev_group/$ curr_groupは、あなたが新しいグループに入っていて、ある種のヘッダーを印刷したいときだけ一致するように設定されています。

+0

yep ...私の応答はアンソニーのメッセージを返すだろう – codemonkey

+0

これは約束どおりに働いた。ありがとう、アンソニー! –

0
while($data = mysql_fetch_assoc($result)){ 
    if($data['product_groups.name'] != $groupname){ 
     echo "Groupname: ".$data['product_groups.name']."<br />"; 
     $groupname = $data['product_groups.name']; 
    } 
    echo "ID: ".$data['products.id']."<br />"; 
    echo "Name: ".$data['products.name']."<br />"; 
} 

たぶん、あなたはこのように行うことができます!

関連する問題