@acspro

Как правильно прописать условие при LEFT JOIN с использованием COUNT для COUNT?

Уважаемые гуру, не хватает познаний в SQL? помогите пожалуйста. Использую Mysql 5. Запрос выглядит в идеале так:
SELECT r.*, r.`seats`- COUNT(re.`id`) as seatsFree FROM `tours` as r
		LEFT JOIN `requests` as re ON re.`tour_id`=r.`id` and re.`visible`=1 and re.`status`=3 
		WHERE COUNT(re.`id`)>5
		group by  r.`id`

И естественно умирает на строчке :
WHERE COUNT(re.`id`)>5
Пишет Invalid use of group function
Я как думаю что нужно писать HAVING но вот как? Как правильно составить запрос?
  • Вопрос задан
  • 538 просмотров
Пригласить эксперта
Ответы на вопрос 2
@acspro Автор вопроса
решено так:
SELECT r.*, r.`seats`- COUNT(re.`id`) as seatsFree FROM `tours` as r
		LEFT JOIN `requests` as re ON re.`tour_id`=r.`id` and re.`visible`=1 and re.`status`=3 
		WHERE 1 
		group by  r.`id`
		HAVING  (seatsFree <=90) 
		ORDER BY r.`finished` DESC
		LIMIT 0,2

Но теперь не понятно как посчитать количество выборок
Нужно что то типа
SELECT COUNT(r.id) as num, r.`seats`- COUNT(re.`id`) as seatsFree FROM `tours` as r
		LEFT JOIN `requests` as re ON re.`tour_id`=r.`id` and re.`visible`=1 and re.`status`=3  WHERE 1  group by  r.`id` HAVING  (seatsFree <=90)  order by num desc
		LIMIT 1

Но работает косячно.
Ответ написан
profit
@profit
Разработка | Оптимизация. Telegram: @evzavyalov
не смотрел суть, но может так:

SELECT r.*, r.`seats`- COUNT(re.`id`) as seatsFree FROM `tours` as r
    LEFT JOIN `requests` as re ON re.`tour_id`=r.`id` and re.`visible`=1 and re.`status`=3 
    group by  r.`id`
    having COUNT(re.`id`)>5
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы