订购mysql结果,以便首先使用特定的id

时间:2014-02-05 11:07:37

标签: php mysql cakephp

我正在使用CakePHP分页来检索一些产品。问题是,当我点击产品时,我通过AJAX获取内容。一切正常但我还需要有产品的直接链接,并且没有产品页面(只有AJAX检索的html块)。

所以我用#product-alias hash实现了列表的链接。如果我在页面中有锚点,我会模拟点击它并且工作正常,会显示产品的内容。

当我的产品在另一页上时出现问题。我认为解决方案是强制查询在第一页上检索产品。

当前查询如下:

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

我可以添加什么条件(或ORDER),以便在theese结果中使用id = 12的产品。

希望这里有足够的信息。 任何其他想法都很好收到了!

谢谢!

3 个答案:

答案 0 :(得分:2)

您可以创建一个临时ID,显示与目标ID的相对距离,并按该值排序。在这种情况下,ID 12

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 :(得分: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;

答案 2 :(得分:0)

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

这应该可行吗?