Mysql SQL具有公共值的最大记录数 请考虑以下两个表: Holidays HolidayID (PK) Destination Length MaximumNumber ... Bookings BookingID (PK) HolidayID (FK) Name ...

Mysql SQL具有公共值的最大记录数 请考虑以下两个表: Holidays HolidayID (PK) Destination Length MaximumNumber ... Bookings BookingID (PK) HolidayID (FK) Name ...,mysql,sql,Mysql,Sql,客户可以预订假期,例如去夏威夷。但是,假设一个给定的假日有最多的地方。e、 忽略其他年份,今年只有75次去夏威夷度假 因此,如果有客户想预订去夏威夷度假的机票。我需要清点预订表中的记录,如果这个数字大于75,我就必须告诉客户已经太迟了。 我可以使用2个MySQL查询1获取假期的最大数量,2获取来自预订的当前总数,并使用PHP将计数值与夏威夷假期的最大数量进行比较。 但我想知道,在这种情况下,是否有一种方法可以完全在SQLMySQL中实现这一点?i、 e.计算夏威夷的预订数量,并与夏威夷的Maxi

客户可以预订假期,例如去夏威夷。但是,假设一个给定的假日有最多的地方。e、 忽略其他年份,今年只有75次去夏威夷度假

因此,如果有客户想预订去夏威夷度假的机票。我需要清点预订表中的记录,如果这个数字大于75,我就必须告诉客户已经太迟了。 我可以使用2个MySQL查询1获取假期的最大数量,2获取来自预订的当前总数,并使用PHP将计数值与夏威夷假期的最大数量进行比较。 但我想知道,在这种情况下,是否有一种方法可以完全在SQLMySQL中实现这一点?i、 e.计算夏威夷的预订数量,并与夏威夷的MaximumNumber值进行比较

编辑: 我的方法:

$query1 = "SELECT MaximumNumber FROM Holidays WHERE HolidayID=$hawaiiID";

$query2 = "SELECT COUNT(BookingID) FROM Bookings WHERE HolidayID=$hawaiiID";

因此,如果第一个查询得到75,第二个查询得到75,我可以在PHP中比较这些值。但是我想知道是否有一种方法可以在SQL中单独实现这一点。

也许我遗漏了一些东西,但是为什么不使用子查询来确定每个holidayid的总预订量:

select *
from holidays h
left join
(
  select count(*) TotalBooked, HolidayId
  from bookings
  group by holidayId
) b
  on h.holidayId = b.holidayId
WHERE h.HolidayID=$hawaiiID;

然后,您可以使用大小写表达式将TotalBooked与MaxNumber进行比较,如下所示:

select h.destination,
  case 
    when b.totalbooked = h.maxNumber
    then 'Not Available'
    else 'You can still book' end Availability
from holidays h
left join
(
  select count(*) TotalBooked, HolidayId
  from bookings
  group by holidayId
) b
  on h.holidayId = b.holidayId
WHERE h.HolidayID=$hawaiiID;


您会注意到,我使用了一个左连接,它将返回Holidays表中的所有行,即使Bookings表中没有匹配的行

像这样的东西会有用的。您可以填写以下详细信息:

select case 
when 
(select count(*) 
from Bookings 
where holidayID = $hawaiiid) 
<= MaximumNumber then 'available' else 'sold out' end status
from holidays 
etc

您可以尝试以下方法:

select case when b.freq < h.MaximumNumber
            then 'Available'
            else 'Not Available'
            end as MyResult
from Holidays h
left join (
   select HolidayID
        , count(*) as freq
   from Bookings
   where HolidayID=$hawaiiID
   group by HolidayID
   ) b
on h.HolidayID=b.HolidayID

最好给出:1-您尝试过什么,2-简单数据,3-希望的输出,4-可能的话使用SQLFIDLE,5-编写格式化的代码,6-。。。。。。我们可以很容易地帮助你