我创建的查询之一存在一个奇怪的“问题”。给定下一个查询:
SELECT ID, DistanceFromUtrecht, ( SELECT (MAX(DateUntil) - (ReleaseDays * 60 * 60 * 24)) FROM PricePeriod WHERE PricePeriod.FK_Accommodation = Accommodation.ID ) AS LatestBookableTimestamp FROM Accommodation WHERE LatestBookableTimestamp < UNIX_TIMESTAMP()
phpMyAdmin一直在引发有关没有名为“ LatestBookableTimestamp”的列的错误,即使我有一个由子查询检索的列,也就是该别名。我也尝试过使用tableprefix选择每一列。第八,这没有用。最终,我通过表别名选择了所有列,并为表指定了别名。一切都没有运气。
有人可以告诉我我在做什么错吗?我什至搜索了一些资源来确定我是否记错了,但是在许多情况下,互联网上的作者使用的语法与我相同。
使用HAVING
HAVING LatestBookableTimestamp < UNIX_TIMESTAMP()
附带一提,您使用的是一个Dependentnt子查询,这对性能而言是一个糟糕的主意。
尝试这样:
SELECT a.ID, a.DistanceFromUtrecht, pp.LatestBookableTimestamp FROM Accommodation AS a INNER JOIN ( SELECT FK_Accommodation, MAX(DateUntil) - (ReleaseDays * 60 * 60 * 24) AS LatestBookableTimestamp FROM PricePeriod GROUP BY FK_Accommodation ) AS pp ON pp.FK_Accommodation = a.ID WHERE pp.LatestBookableTimestamp < UNIX_TIMESTAMP()