我有一个像这样的MySQL表:
acco_id | room_id | arrival | amount | persons | available
1 | 1 | 2015-19-12 | 3 | 4 | 1
1 | 2 | 2015-19-12 | 1 | 10 | 1
1 | 1 | 2015-26-12 | 4 | 4 | 1
1 | 2 | 2015-26-12 | 2 | 10 | 1
2 | 3 | 2015-19-12 | 2 | 6 | 0
2 | 4 | 2015-19-12 | 1 | 4 | 1
我想要实现的是单个查询,其结果如下:
acco_id | max_persons_available
1 | 22
2 | 4
我尝试使用如下的查询来使用GROUP BY accommodation_id:
SELECT
accommodation_id,
SUM(amount * persons) as max_persons_available
FROM
availabilities
WHERE
available = 1
GROUP BY
accommodation_id
只有现在,acco_id的结果才会使用所有到货日期。当我向查询添加到达时,没有更多唯一的acco_id。
有没有人知道可以使用表索引的单一SQL?
答案 0 :(得分:1)
如果我正确理解问题(最后一部分有点令人困惑)。您想拥有现在的住宿ID和号码,但仅限于特定的抵达日期。
如果是这样,以下陈述应该完全如此,因为如果你只是"只是"没有必要到达选择。在where语句中使用它。除此之外,您需要将其放入群组中,因此具有非独特的住宿ID。
SELECT
accommodation_id,
SUM(amount * persons) as max_persons_available
FROM
availabilities
WHERE
available = 1 and arrival >= '2015-12-19' and arrival < '2015-10-26'
GROUP BY
accommodation_id
答案 1 :(得分:0)
我猜(读你的问题)你在寻找的是这个,但我不确定你的问题有点不清楚:
SELECT
accommodation_id,
arrival,
SUM(amount * persons) as max_persons_available
FROM
availabilities
WHERE
available = 1
GROUP BY
accommodation_id, arrival