算上每个房间的序数

时间:2012-11-29 16:17:05

标签: php mysql date count ordinal

对于每种房型,我想计算它的位置(可能是序数,但只是一天的位置)。例如,我有两种类型的房间,预订时间相同(从2012-11-302012-12-06)。我需要计算每种房型的每一天。

请查看下表。

enter image description here

我需要一个列day才能运行一天的职位。基本上我把mySQL写成:

SELECT ????? , booking_customer.bkcus_date AS DATE, villas_db.v_name AS vname, booking_customer.bkcus_rate AS cost
FROM booking_customer
INNER JOIN villas_db ON booking_customer.bkcus_vid = villas_db.v_id
WHERE booking_customer.bkcus_sid =  '<sid>'
LIMIT 0 , 30

其中?????是运行此类号码所需的代码。那么你能告诉我是否有更好的方法来完成这项工作 - 例如PHP。

此致

2 个答案:

答案 0 :(得分:1)

如果您真的想要一个SQL解决方案,请转到: 这不需要像SET @counter = 0;

这样的其他声明

//第二次编辑

SELECT IF((@counter := @counter + 1) < 8, @counter, @counter := 1 ) AS day,
    booking_customer.bkcus_date AS DATE, 
    villas_db.v_name AS vname, 
    booking_customer.bkcus_rate AS cost
FROM (SELECT @counter:=0) AS c, booking_customer
INNER JOIN villas_db ON booking_customer.bkcus_vid = villas_db.v_id
WHERE booking_customer.bkcus_sid =  '<sid>'
LIMIT 0 , 30

答案 1 :(得分:1)

根据要求,作为一个非常丑陋的双查询SQL hack:

SET @cntr = null, @prev=null;

SELECT IF((@prev <> vname) or (@prev is null)),
    @cntr := 1, @cntr := @cntr + 1) AS day,
    @prev := vname,
    etc...
FROM ...
...

这仅适用于您在screencap中拥有排序顺序的主要内容。如果您开始更改排序顺序,您将获得一组完整不同的数字