0

我正在使用 MySQL 作为数据库。

现在我让一切正常工作,但是由于我的客户希望在网站上进行过滤,我遇到了一些问题,即我到底需要做什么以及最好的方法是什么。

所以这是我的数据(我会尽可能简化)

id  name  price  nr.bed  nr.bath
---------------------------------
1     a     33     2        4
2     b    100     5        1
3     c    102     2        2 
4     d     85     1        1
5     e     37     6        4 
6     f     19     2        1 

因此,第一次加载页面时,我使用此查询从数据库中获取前 5 个:

SELECT * FROM hotel LIMIT 5

我明白了:

id  name  price  nr.bed  nr.bath
---------------------------------
1     a     33     2        4
2     b    100     5        1
3     c    102     2        2 
4     d     85     1        1
5     e     37     6        4 

之后每次我打电话给这个:

SELECT * FROM hotel WHERE id>'last_id(in this case 5)' LIMIT 5

我得到:

id  name  price  nr.bed  nr.bath
--------------------------------- 
6     f     19     2        1 

等等...

但是现在我需要使用过滤器,例如我将过滤价格

所以我需要有类似的东西:

SELECT * FROM hotel where id>5 order by price desc LIMIT 5

但是后来我丢失了我的 id 订单,我无法从数据库中获取下五个,因为我无法与id酒店进行比较,因为一切都是按价格订购的。

我怎样才能做到这一点?我是否需要添加另一列或其他内容来保持我的订单不变?所有内容都使用表格中的 id 显示在网站上。

编辑:

我不确定这是否可能,因为我需要在 asc 中订购 id 并在 desc 中订购价格,但我不确定我们是否可以将这两者结合在一起而不添加另一列或其他东西。

编辑2:

我想得到这样的东西

id  id_copy  name  price  nr.bed  nr.bath
-----------------------------------------
 1      3     c     102     2        2 
 2      2     b     100     5        1
 3      4     d      85     1        1
 4      5     e      37     6        4 
 5      1     a      33     2        4
 6      6     f      19     2        1
4

3 回答 3

0

然后订购两列:

SELECT * FROM hotel where id>5 order by price desc , id asc LIMIT 5
于 2013-03-05T13:46:01.080 回答
0

首先,您不应该在没有limit顺序order by的情况下使用。您的查询应如下所示:

SELECT *
FROM hotel
WHERE id>'last_id(in this case 5)'
ORDER BY id
LIMIT 5

对于您的问题,您需要一个子查询:

select *
from (SELECT * FROM hotel where id>5 order by price desc LIMIT 5
     ) t
order by id

内部查询按价格选择 5。外层按 id 排序。

offset如果您想将其用于“分页”,那么您应该熟悉limit. 这在此处的 MySQL 文档中有所描述。

于 2013-03-05T14:24:08.147 回答
0

我想这就是你要找的

   SELECT * FROM hotel  order by price desc limit 0 ,5

那么如果你想要下一个 5

 SELECT * FROM hotel  order by price desc limit 5 ,5

然后

   SELECT * FROM hotel  order by price desc limit 10 ,5

等等...

你可以像这样在php中做这个

   $sql="SELECT * FROM hotel  order by price desc "

if (sombutton is clicked) {
          $sql .= " limit 0,5" ;}
 if (sombutton is clicked){ 
                       $sql .= " limit 5,5" ; }

$i或者您可以在每次添加 5时通过带有变量的循环来完成。

于 2013-03-05T14:46:33.757 回答