Привет друзья!
Встрял с запросом, никак не могу придумать как сделать фильтрацию по статусу заказа. 
Есть таблица с заказами:
ordersid | fio  | phone
------------------
25 | Ivan | +7982...
есть таблица со статусами:
orders_logid  | order_id | action     | action_date
-----------------------------------------------
335 |       25 | CREATED    | 2018-11-09 08:00:00
336 |       25 | APPROVED   | 2018-11-09 08:30:00
336 |       25 | SENT       | 2018-11-09 09:20:00
336 |       25 | CHANGE_SYS | 2018-11-09 09:25:00
...
есть таблица с типами статусов log_actions (технические статусы is_technical = 1 их не показываем операторам, и публичный который могут видеть операторы is_technical = 0)
log_actionsid | action     | is_technical
------------------------------
1  | CREATED    | 0
2  | APPROVED   | 0
3  | SENT       | 0
5  | CHANGE_SYS | 0
операторы видят в вебморде список заказов с текущим статусом. запрос для этого такой:
SELECT 
	`orders`.*, 
	(
		SELECT ol.`action` 
			FROM `orders_log` ol 
			LEFT JOIN log_actions la ON ol.`action` = la.`action` 
		WHERE 
			ol.order_id = orders.id AND 
			la.is_technical = 0 
		ORDER BY  ol.`dttm` 
		DESC LIMIT 1
	) as `status` 
FROM `orders`
и все хорошо и быстро работает до тех пор пока оператор не захочет найти заказы с определенным 
текущим статусом. Например все заказы которые на данный момент имеют последний не технический статус "Создан". Для поиска по конкретному статусу дописываю так:
...
FROM `orders`
HAVING (`status`='CREATED')
получается что он вытаскивает сначала все записи (а их много), а потом фильтрует уже. из за этого так долго. А просто status = 'CREATED' выдает ошибку что нет такого поля, т.к. оно динамическое получается, и не работает в WHERE.
Вопрос: как избавится от HAVING в данном случае, чтобы выборки были быстрыми? Мучаюсь страдаю 2-ой день уже.