mysql - 将表连接到另一个表后查询表的每一行

标签 mysql sql postgresql

我构建了一个 SQL 查询来获取所有可供出租且未预订的特性地址:

  select property.address
  from (period join booking on period.propertyid = booking.propertyid) join property on period.propertyid = property.id
  where period.type = 'available'
  AND period.end >= TO_DATE('2016-01-25', 'YYYY-MM-DD')
  AND period.start <= TO_DATE('2016-01-20', 'YYYY-MM-DD')
  AND (
    booking.start > TO_DATE('2016-01-25', 'YYYY-MM-DD') OR
    booking.start < TO_DATE('2016-01-20', 'YYYY-MM-DD')
  )
  AND (
    booking.end > TO_DATE('2016-01-25', 'YYYY-MM-DD') OR
    booking.end < TO_DATE('2016-01-20', 'YYYY-MM-DD')
  );

但是,由于 period.propertyid = booking.propertyid 上的 period join booking,它不会查询 properties(公寓)的 periods booking 表中不存在。

如何加入 booking 表以便仍然查询所有 periods

最佳答案

使用LEFT JOIN:

select property.address
  from (
    period 
    left join booking on period.propertyid = booking.propertyid) 
... 

关于mysql - 将表连接到另一个表后查询表的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35026450/

相关文章:

mysql - 我如何在 mysql 中插入多个值并避免重复

php - mysql, php - 字符编码问题`

php - 如何将 JavaScript 结果转换为显示下拉列表 <option val ="value">Text</option>

sql - 如何创建动态和安全的查询

javascript - sequelize v4 复制的密码验证失败

mysql - 根据文本 SQL 查询的一部分获取唯一字段

mysql - 基于列值的SQL计算

asp.net - SQL Azure 超时

ruby-on-rails - 为 Rails 中的 Postgres 查询临时增加 'statement_timeout'?

python - type char exceed 10485760 limit 在我将限制更改为小于 MAX 后仍然显示错误