对于每种房型,我想计算它的位置(可能是序数,但只是一天的位置)。例如,我有两种类型的房间,预订时间相同(从2012-11-30
到2012-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。
此致
答案 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中拥有排序顺序的主要内容。如果您开始更改排序顺序,您将获得一组完整不同的数字