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