2011-08-11 67 views
0

列表按日期排序。但是,行可以標記爲「最高優先級」,這將確保這些行始終顯示在非優先級之前。以下SQL對於顯示列表非常適用:MySQL下一個/上一個項目按查詢 - 類別第一,然後日期

SELECT * FROM table ORDER BY (CASE WHEN category = 'top_priority' 
THEN 0 ELSE 1 END), date DESC 

當我點擊一行時,我想顯示下一個/上一個按鈕。由於兩類(優先級第一),我不能用這樣的(PHP)的簡單查詢:

$next_id = "SELECT id from table WHERE date > $this_items_date" 

請問我能不能找出一個/上一個ID,當我知道目前的ID?

回答

0

而不是截止日期,去行號。在輸出結果時,請記錄您所在的行。然後你可以爲下一個/上一個做簡單的SELECT ... ORDER BY ... LIMIT 1,$row+1$row-1

+0

感謝您的回覆。忘了提及從其他*頁面的'item.php?id = 30'(etc)有直接鏈接而不是行列表。所以我並不總是有可能將行號傳遞給物品頁面。我想避免循環瀏覽項目頁面上的整個表格,因爲大約有10000行(使用[PEAR Pager](http://pear.php.net/package/Pager)創建列表)。 – elaxsj

+0

好吧,您可以使用LIMIT來僅顯示受限制的行集。只要您知道在「整體」記錄集中生成當前頁的偏移量,就可以調整LIMIT子句以適當啓動。並且使用mysql的'sql_calc_found_rows',如果限制條件不存在,您可以輕鬆找出將檢索多少行。 –

相關問題