首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL根据另一个表中的记录和或没有记录查询一个表

MySQL根据另一个表中的记录和或没有记录查询一个表
EN

Stack Overflow用户
提问于 2011-08-04 15:45:02
回答 4查看 347关注 0票数 1

我很难从一个位置表(如酒店)中选择记录,因为它们存储在单独的表中。为了避免在每个可能的日期/地点组合中都有大量的可用性记录,可用性表只在给定的日期保存有限的或没有可用性的记录--因此,缺少匹配的记录意味着完全可用。

桌子有点像..。

地点: id,姓名,maxRooms等。 可用性: locationID,date,roomsAvailable(从零开始的整数表示maxRooms没有可用性)

...and我需要做的是选择所有地点谁-在给定的日期期间-有一些可用性。这意味着它们要么没有匹配的可用性记录(即完全可用),要么它们匹配的availability.roomsAvailable记录的总和大于零。

我有点头疼,只是想解释一下:-(任何感激的想法.

EN

回答 4

Stack Overflow用户

发布于 2011-08-04 15:56:04

代码语言:javascript
复制
SELECT locations.id FROM locations LEFT JOIN availability
    ON( locations.id = availability.locationID AND
        ( availability.roomsAvailable > 0 OR ISNULL( availability.locationID ) ) )
票数 2
EN

Stack Overflow用户

发布于 2011-08-04 15:48:08

您需要使用左联接

票数 0
EN

Stack Overflow用户

发布于 2011-08-04 16:04:15

我认为您可以这样查询,得到所有可用房间之和大于0的特定日期,然后得到在可用性中没有列出的所有位置。

代码语言:javascript
复制
SELECT * FROM locations 
WHERE id in 
(
  SELECT locationId
  FROM availability
  WHERE date >= '2011-05-01' and date <= '2011-07-01'
  GROUP by locationId
  HAVING SUM(roomsAvailable) > 0
) 
OR id not in (SELECT DISTINCT locationId FROM availabilty)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6944452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档