Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
363 views
in Technique[技术] by (71.8m points)

关于一条sql语句的问题

先上码:大致浏览一遍就好,重点请看文字。
$price = M('hotel_price')
->where("room_type = '{$room_type}' and status=1 and start_date <= '{$date}' and site_hotel_price.end_date >= '{$date}'")
->field("(case when '{$week}' in (weekend) then price_weekend else price_weekdays end) as price")
->find();


这是在thinkphp中的一条sql查询,我努力解释一下,望大神挑出重点耐心看看:

首先,我的想法是想找出房型的当日价格,价格分周末价格和非周末价格,周末是自定义的(也就是可以设置任意星期几为周末,在表中的字段为weekend,字段类型为varchar,也就是这条sql中in(weekend)中的weekend),这里通过判断$week(星期几)是周末还是非周末,但是in (weekend)这里出了问题,没有得到想要的结果。

测试发现,好像是sql编译之后in(weekend)变成了in('1,2,3')而不是in(1,2,3)(假设这里weekend为字符串'1,2,3'也就是设置的星期1到星期3为周末)。那么现在如何修改sql才能达到in(1,2,3)的结果,而不是in('1,2,3')呢,还是根本就不能通过mysql做到?只能通过php操作数据了?

诚心求教大神~~~~有什么我没说明白的地方请评论,我尽量第一时间回答。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

这只能php整合数据,因为你给的是一个字符串,不是mysql要的数据格式,所以mysql没法弄


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...