2014-02-05 56 views
0

我正在使用CakePHP分頁以檢索某些產品。事情是,當我點擊一個產品,我通過AJAX獲取內容。一切正常,但我也需要直接鏈接到產品,並且沒有產品頁面(只有通過AJAX檢索到的html塊)。訂購mysql結果爲了使特定的ID成爲第一個

所以我已經用#product-alias hash實現了鏈接。如果我在頁面中有錨點,我模擬點擊它並且工作正常,則會顯示產品的內容。

問題出在我的產品在另一頁上時。我希望解決方案是強制查詢在第一頁上檢索產品。

當前查詢是這樣的:

SELECT * FROM products Product {JOINS} WHERE Category.id = 1, Product.active = 1 LIMIT 0,10; 

我能在順序添加的條件(或ORDER)具有與在theese結果的ID = 12的產物。

希望這裏有足夠的信息。 任何其他的想法都很好接受!

謝謝!

+1

你可以做'ABS(ID - 12)'和排序由 – ToBe

+0

你只想用的productid = 12的項目?那是對的嗎? –

+0

@ToBe請將其作爲答案標記爲正確。我抱你! –

回答

2

您可以創建一個臨時ID,顯示與目標ID的相對距離並按該值排序。在這種情況下,ID :

SELECT *, ABS(Product.id - 12) AS idOrder 
FROM products Product 
{JOINS} 
WHERE Category.id = 1, Product.active = 1 
ORDER BY idOrder ASC 
LIMIT 0,10; 
+1

按照要求,我的懶惰評論作爲一個完整的答案;) – ToBe

0

在WHERE中使用它。假設ProductId是12,那麼使用下面的語法。

SELECT * FROM products Product {JOINS} 
WHERE Category.id = 1, Product.active = 1 AND Product.ProductId=12 LIMIT 0,10; 

如果你想跳過12條記錄,你可以使用這個

SELECT * FROM products Product {JOINS} 
WHERE Category.id = 1, Product.active = 1 LIMIT 12,10; 
+0

嘿凱,上面的查詢只會得到產品。 –

+0

嘿!您的問題是:「爲了讓產品的id = 12,我可以添加什麼條件(或ORDER)」。 –

+0

是的,但我沒有說它應該是唯一的......我會一直這麼簡單。 –

0
SELECT * FROM products Product {JOINS} WHERE Category.id = 1, Product.active = 1 OR Product.id = 12 LIMIT 0,10; 

這應該工作我想?

+0

這不會改變任何東西。 –

+0

是的,我的不好。如果服務器是mysql,您可以使用: SELECT * FROM products Product {JOINS} WHERE Category.id = 1,Product.active = 1 ORDER BY字段(id,12)DESC LIMIT 0,10; –

+0

@LucianVasile有用嗎? –