我有一種情況,即基於另一列上的排序值構建新列表。基於排序值創建新項目
例如 表:產品 ID,名稱,排序順序,到期日期
表:列出 ID,PRODUCT_ID
比方說,我想永遠有15種產品的名單表和順序。但是,產品過期了,發生這種情況時,它們將從列表中刪除,然後我們需要根據sort_order(「列表+ 1」中的最後一個sort_order id,如果它存在如果不是,則重新開始)。
我希望這是有道理的......
但我的問題是,是否有一種方法來處理這一切都在一個查詢?
現在,這裏是我會怎麼做:
Query 1: SELECT count(*), sort_order as so FROM lists ORDER BY sort_order DESC
if($count < 15){
$difference = 15 - $count;
for($c = $count; $c >= 1; $c -=1){
Query 2: SELECT id FROM products WHERE sort_order = $so + 1 LIMIT 1
if(results = 0){
Query 3: SELECT id FROM products ORDER BY sort_order ASC LIMIT 1
Query 4: INSERT (id) into lists
}else{
Query 5: INSERT (id) INTO LISTS
}
}
}
就好像很多查詢的一個相當簡單的任務....任何建議將是巨大的!
謝謝!
建議1:你可以把插入語句如果條件之外,你不會需要其他人。 建議2:嘗試使用視圖而不是表格列表。 如果我正確理解要求,則需要15個未過期的產品進行排序。如果在該排序中沒有15個產品按照下一個排序順序查找產品 – Hemang 2010-10-07 22:36:03