MySQL: her gruplandırma için sadece bir kez veri yazdırma

2 Cevap php

PHP / MySQL kodlama ve ürün ve ürün grubu veri almak için aşağıdaki sorgu ediyorum:

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

Yani bu sorgu ürünleri getirir ve ürün grubuna göre onlara emreder. Ne var istiyorum her ürün gruplandırma için sadece bir kez product_groups.name göstermektir. Yani on ayakkabı ürünler olsa bile, grup adı "Ayakkabı" yalnızca bir kez görüntülenir olduğunu.

Ben sonuçlarını yazdırmak için aşağıdaki PHP kullanıyorum:

while ($data = mysql_fetch_array($result))

2 Cevap

Eğer MySQL sorgusu yapılan istiyorsanız, buna değer daha dürüst daha fazla sorun olduğunu. Biri için, sözdizimi her gruplandırma üstünde listelenen bir grup adı var (çağırmak gibi) gerçekten sakat. Ve sonuç yine satır olarak kabul edilir, bu yüzden grup adı null gibi tüm diğer sütunları ile bir satır gibi muamele edilecektir, bu yüzden ilgisi var gibi gerçekten PHP komut herhangi bir zaman ve çaba tasarruf olmaz bir if ifadesi Bir grup adı yerine grup verilerini çarptığında yakalamak için.

Eğer PHP tarafından yapılan istiyorsanız döngü sırasında, Johan doğru yolda olduğunu. Ben benzer bir durum için aşağıdakileri kullanın:

$result = $sql->query($query);

$prev_group = "";

while($data = $result->fetch_assoc()){
   $curr_group = $data['group'];
   if ($curr_group !== $prev_group) {
      echo "<h1>$curr_group</h1>";
      $prev_group = $curr_group;
    }
    else {
        echo $data;
        .....
     }

Açıkçası yankı veri veri parçalarını istediğiniz şekilde yankı kurmak olacaktır. Yeni bir grup vardır ve bu nedenle bazı tür bir başlığı yazdırmak istediğiniz zaman maç olmaz sadece zaman olduğunu böylece Ama $ prev_group / $ curr_group kurulur.

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 />";
}

Belki böyle yapabilirsiniz!?