используя статистическую функцию, чтобы сузить мой запрос - PullRequest
0 голосов
/ 27 августа 2009

Я хочу сделать что-то вроде этого:

SELECT locations.id, places.id, scannables.id, SUM(scannables.available)
FROM `scannables` 
INNER JOIN places ON scannables.place_id = places.id
INNER JOIN locations ON places.location_id = locations.id
WHERE locations.id = 2474 AND scannables.bookdate 
BETWEEN '2009-08-27' and date_add('2009-08-27', INTERVAL 3 DAY)

AND SUM(scannables.available) >= 3

GROUP BY scannables.place_id

Это работает ... за исключением "И СУММЫ (scannables.available)> = 3"

Я не уверен, как заставить его работать,

Ответы [ 2 ]

2 голосов
/ 27 августа 2009

В MySQL я не думаю, что вы можете выполнить WHERE для псевдонима агрегата. Я думаю, что вы должны использовать HAVING, который фильтрует результаты после выполнения запроса.

Почему бы не использовать WHERE SUM (...)?

0 голосов
/ 27 августа 2009

Хорошо, похоже, это работает:

SELECT locations.id, hostels.id, scannables.id, SUM(scannables.available)
FROM `scannables` 
INNER JOIN hostels ON scannables.hostel_id = hostels.id
INNER JOIN locations ON hostels.location_id = locations.id

WHERE locations.id = 2474 AND scannables.bookdate BETWEEN '2009-08-27' and date_add('2009-08-27', INTERVAL 3 DAY)

GROUP BY scannables.hostel_id
HAVING SUM(scannables.available) > 3

ЕСТЬ ПОСЛЕ ГРУППЫ

Спасибо!

...