php - MySQL 查询连接

标签 php mysql cakephp

我正在尝试建立一个控制租赁属性(property)组合的网站。网站所有者可以为特性创建列表。该酒店有每晚的默认价格,但也可以设置特殊价格,例如八月的价格。

然后,网站用户可以进入网站并输入日期范围并搜索该时间段内可用的列表。我还需要在那个阶段看看是否有特殊价格来取代默认价格。

所以我的表格是:

listings
    id
    default_price
    etc...

bookings 
   id
   listing_id
   checkin
   checkout

special_prices
   id
   listing_id
   from
   to
   price

但是我对 sql 查询毫无用处,而且我无法弄清楚在输入的时间段内没有预订的列表的查询会是什么样子,并且如果存在的话,它会获得special_price。

如果这使得查询更容易构建,我正在使用 cakephp。谁能帮帮我吗?

编辑 嘿伙计们,我现在仍在努力解决这个问题,我只是专注于获取没有与请求日期冲突的预订的列表,之后我会整理特价内容

目前我有:

$conditions = array(
    "AND" => array(
        "OR" => array(
                    "Listing.address_one LIKE" => "%".$area."%",
                    "Listing.address_two LIKE" => "%".$area."%",
                    "Listing.city LIKE" => "%".$area."%",
                    "Listing.postcode LIKE" => "%".$area."%",
                    "Listing.title LIKE" => "%".$area."%",
                    ),
                    )
                );

$this->Listing->bindModel(array('hasMany' => array('Booking' => array('conditions' =>array('Booking.checkin BETWEEN ? AND ?' => array($to, $from))))));
$data = $this->paginate('Listing', $conditions);
$this->set('data', $data);

这会获取与列表列中的 $area 关键字匹配的所有结果,但似乎完全忽略了 Bookings 表。我尝试放入 NOT BETWEEN 来查看是否有影响,但它仍然只返回与 $area 匹配的任何内容,并且似乎忽略了请求日期之间的预订。

有人有什么想法吗?

最佳答案

有多种方法可以做到这一点,但 LEFT JOINing 预订表并搜索空结果是一种方法。假设 checkin = 预订日期...

SELECT 
* 
FROM listings l
LEFT JOIN bookings b ON b.listing_id = l.id AND b.checkin BETWEEN YOUR START DATE AND YOUR_END_DATE
WHERE b.id IS NULL

关于php - MySQL 查询连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17426316/

相关文章:

php - .htaccess 的重定向不正确

mysql - 锁定通过触发器操作的表的后果?

mysql - 在 SQL 中增加列大小的潜在风险是什么?

mysql - 从MYSQL中的3个表中选择数据

PHP - 表 ID 相同

php - 如何使用 select join two tables by using right to specify the last character of join values in codeigniter?

php - saveAll() 的 CakePHP 问题

CakePHP 1.3 错误 : Fatal error: Call to a member function cd() on a non-object in/var/www/html/projectname/cake/libs/cache/file. php 在线 248

mysql - CakePHP - 尝试根据与主要帖子和创建日期共享的标签的相关性对帖子进行排序

我认为 PHP 错误无法弄清楚与 SQL 相关的东西