MySQL db gelen sonuç sayısını gösteriliyor

2 Cevap php

Ben bir seri ilanlar sitesi var ve bir veritabanı olarak MySQL kullanıyor.

Amacım form içinde bir metin girişi girilen arama terimi ile db özel, şirket ve toplam reklamların sayısını göstermek için!

The Problem: There are two types of ads: Private, and Company. The user may specify which to display, or both, so thats three options.

Web sitesinde, arama sonuçlarını görüntüledikten sonra, ben kullanıcı THREE sekmeleri göstermek istiyorum: All ads, Private ads, Company ads.

Ben de Private or Company değerini içerir MySQL her kaydın bir field var.

Ben özel reklamlar, firma reklamları ve TOPLAM reklamların sayısını göstermek için bir yol biliyorum ama multiple queries gerektirir.

Kullanıcı ÖZEL SADECE onay kutusunu KONTROL EDER Örneğin, daha sonra sadece özel reklamlar aranır, ama ben şirket reklamlar için de aramak yeni bir sorgu yapmak kadar kaç tane şirket reklamları bilemezsiniz. Sonra onları eklemek, ve ben de reklamların toplam nr var.

Eğer iyi bir yol biliyorsanız sadece belki ekstra sorgunun kurtulmak için, acaba?

Teşekkürler

2 Cevap

Sen kullanabilirsiniz bir ROLLUP:

SELECT
    IFNULL( field , 'All ads' ) AS 'Type',
    COUNT( * )
FROM
    `table`
GROUP BY
    field
WITH ROLLUP

Yani dört Şirket ve bir özel reklam ile görmek istiyoruz:

Type       COUNT( * )
Company    4
Private    1
All ads    5

Kerede tüm verileri sorgulamak ve PHP için onu geçmek. Eğer buna sahip kez PHP üç ayrı döngüler kurmak .. Örn:

foreach($data AS $row)
{
    if($row['type'] == 'company')
    {
        // LOOP THROUGH COMPANY DATA
    }
}

foreach($data AS $row)
{
    if($row['type'] == 'private')
    {
        // LOOP THROUGH PRIVATE DATA
    }
}

Bu şekilde sadece bir kez ayarlanır veri çekme, ancak cerrahi ayrı ayrı sekmede kümesinden istediğiniz verileri gösterebilir.

Sadece isteyen varsa size sayar seçtiğinizde sayar GROUP BY yan tümcesi kullanın.