我的mysql数据库是:PHP的MySQL搜索房间可用性需要帮助更好的SQL查询
BOOKING_ID, FROM_DATE, TO_DATE,
R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13,R14,R15,R16,R17
其中R1 =房间1 ... R17 = room17,如果房间1预订,比R1将设置为1
下面是我目前工作的SQL查询,我从来没有学习SQL,我需要帮助更好的sql查询!
for($room=1;$room<=$total_room;$room++)
{
$result = mysql_query("
SELECT COUNT(`BOOKING_ID`) AS num
FROM $search_for_db_table
WHERE ( (FROM_DATE <= $search_to_date AND TO_DATE >= $search_to_date)
OR (FROM_DATE <= $search_from_date AND TO_DATE >= $search_from_date)
OR (FROM_DATE >= $search_from_date AND TO_DATE <= $search_to_date)
)
AND R$room=1
") or die(mysql_error());
$row = mysql_fetch_assoc($result);
$numUsers[$room] = $row['num'];
}
//$numUsers[$room]=="0" means room available for booking...
当前语句有什么问题吗?“越”越好意味着更高效,更少代码,更好的表格结构等等 – 2012-08-05 09:42:24
数据模型似乎对这些r1-r17字段名称很陌生 – 2012-08-05 09:45:33
请不要使用'mysql_ *'函数,它们不再是维持和社区已经开始[弃用程序](http://goo.gl/KJveJ)。相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定,[本文](http://goo.gl/3gqF9)将有助于选择。如果你想学习,[这里是一个很好的PDO相关教程](http://goo.gl/vFWnC)。 – vascowhite 2012-08-05 09:48:20