2012-09-24 47 views
1

我想在數據庫查詢上放置一個限制子句,只顯示前4個結果。凡放置限制條款?

當前的代碼,我有工作是

$categories_query = "select c.categories_id, cd.categories_name, c.parent_id 
         from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd 
         where c.categories_id = cd.categories_id 
         and c.categories_status=1 " . 
//        "and c.categories_id = ptc.category_id " . 
//        "and ptc.category_id = cd.categories_id " . 
//        "and ptc.product_type_id not in " . $this->document_types_list . " 
         " and cd.language_id = '" . (int)$_SESSION['languages_id'] . "' 
         order by c.parent_id, c.sort_order, cd.categories_name"; 
     $categories = $db->Execute($categories_query); 
     while (!$categories->EOF) { 
      $this->data[$categories->fields['parent_id']][$categories->fields['categories_id']] = array('name' => $categories->fields['categories_name'], 'count' => 0); 
      $categories->MoveNext(); 
     } 

,我有是我發現了一種由訂單查詢後放置LIMIT 4限制只有4個結果的問題,它顯示了前4父類別,但它也從列表中刪除子類別。

所以我想借此

<ul> 
    <li>Menu One</li> 
    <li>Menu Two 
     <ul> 
     <li>Submenu One</li> 
     <li>Submenu Two</li> 
     <li>Submenu Three</li> 
     </ul> 
    </li> 
    <li>Menu Three</li> 
    <li>Menu Four</li> 
    <li>Menu Five</li> 
    <li>ect...</li> 
</ul> 

看這

<ul> 
    <li>Menu One</li> 
    <li>Menu Two 
     <ul> 
     <li>Submenu One</li> 
     <li>Submenu Two</li> 
     <li>Submenu Three</li> 
     </ul> 
    </li> 
    <li>Menu Three</li> 
    <li>Menu Four</li> 
</ul> 

,並在查詢放置在 'LIMIT 4' 那隻能說明這個

<ul> 
    <li>Menu One</li> 
    <li>Menu Two</li> 
    <li>Menu Three</li> 
    <li>Menu Four</li> 
</ul> 

怎麼辦我保留子類別與父類別?純粹只打電話給第一個4並不叫它下面的類別

回答

0

查詢完全按照你要求的做 - 「LIMIT」意味着你只返回4個記錄,按categoryID排序。

爲了得到你想要的東西,你必須改寫查詢 - 我沒有去安裝這檯筆記本電腦的SQL,所以很難進行測試,但這樣的事情:

$categories_query = "select c.categories_id, cd.categories_name, c.parent_id 
         from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd 
         where c.categories_id = cd.categories_id 
         and c.categories_status=1 " . 
         " and cd.language_id = '" . (int)$_SESSION['languages_id'] . "' 
         " and c.parent_id in " . 
         " (select parent_id from " . TABLE_CATEGORIES . " limit 4) " . 
         " order by c.parent_id, c.sort_order, cd.categories_name"; 
     $categories = $db->Execute($categories_query); 
     while (!$categories->EOF) { 
      $this->data[$categories->fields['parent_id']][$categories->fields['categories_id']] = array('name' => $categories->fields['categories_name'], 'count' => 0); 
      $categories->MoveNext(); 
     }