0

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

请看下表。

在此处输入图像描述

我需要一个专栏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。

问候,

4

2 回答 2

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
于 2012-11-29T16:43:12.667 回答
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 ...
...

这仅适用于您在屏幕截图中的主要排序顺序。如果你开始改变排序顺序,你会得到一组完全不同的数字

于 2012-11-29T17:26:36.737 回答