我想知道是否有人可以帮助我解决一直困扰的查询。

我有2张桌子:

价格和访客

价格:

在此表中,第一列代表年龄组(0-4、4-12、12-80)及其相应的价格

年龄阶层

0
4
12
80

价钱

0
5
20
15

访客:

名称

辛迪
鲍勃

生日

2001-01-28
1958-03-01

我想要一个选择语句,向我显示访客的姓名和他们必须支付的价格。

因此,我可能需要与此类似的东西才能达到年龄:

year(curdate())-year(visitors.BirthDate)

然后我猜我也需要这样的东西:

其中max(Prices.AgeGroup)
不幸的是,这就是我所困扰的地方,我已经从事此工作已经有一段时间了,但是我仍然无法创造出理想的结果。

无论如何,如果有人可以帮助我,我将非常感激。 :)

最佳答案

您可以使用此查询。

SELECT
visitors.name, visitors.birthdate, DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(birthdate, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(birthdate, '00-%m-%d'))
AS age, (select price from prices where age_group < age order by age_group desc limit 1) as price
FROM
visitors


这是给您的SQLFiddle

10-07 17:49