2011-08-15 96 views
0

我的代碼如下。基本上,這是一個「交易」網站(類似於groupon)。此頁面顯示城市中的所有活動交易,並按類別對其進行分類。例如,它會顯示:「餐飲」(然後是餐飲下的所有交易),然後是「冒險」(以及冒險下的所有交易)。等我想要做的就是縮短一大堆。我想每個展示最多隻能展示3筆交易,但後面會顯示一條鏈接:「在此類別中查看(x)更多」。例如:按類別獲取結果數量

Dining 

<max of 3 deals> 
    (if deals > 3) "View 9 more deals in Dining" 

Adventure 

<max of 3 dals 
    (if deals > 3) "View 4 more deals in Adventure" 

等。我知道我可以分開,並有一大堆的SQL語句(獲得各種美食交易,表明3.獲得冒險所有的交易表現3,等我只是。想知道是否有可能以另一種方式做到這一點)。

$deals = mysql_query("SELECT $db[ddd_companies].name as company_name, $db[ddd_companies].slug as company_slug, $db[ddd_deals].slug as slug, $db[ddd_deals].id, $db[ddd_deals].company_id, $db[ddd_deals].end_time, $db[ddd_deals].name, $db[ddd_deals].photo_alldeals, $db[ddd_categories].name as category 
        FROM $db[ddd_deals] 
        JOIN $db[ddd_cities_deals] as cd ON $db[ddd_deals].id=cd.deal_id 
        join $db[ddd_categories] on $db[ddd_categories].id=$db[ddd_deals].category_id 
        join $db[ddd_companies] on $db[ddd_companies].id=$db[ddd_deals].company_id 

        WHERE cd.city_id='$_SESSION[city_id]' AND $db[ddd_deals].start_time<='$now' AND $db[ddd_deals].end_time>'$now' AND $db[ddd_deals].deal_status_id='2' ORDER BY $db[ddd_categories].name, $db[ddd_deals].end_time"); 

$section = ''; 
while($d = mysql_fetch_array($deals)) { 
    if($section != $d['category']) { 
     // Display Section title when there is a new one 
     ?> 
     <div style="clear: both;">&nbsp;</div> 
     <h2><?php echo $d['category'];?></h2> 
     <?php 
    } 
    // Show deal information 
    $section = $d['category']; 
} 

編輯補充:限制會允許我結果#限制爲3,但我還需要拉起多少這一類。

+1

嘗試http://stackoverflow.com/questions/3526219/mysql-limit-in-a-correllated-subquery –

回答