У меня есть 3 стола.ГДЕ условие на значение подзапроса
table deals
+----+------+-------------+
| id | name | location_id |
+----+------+-------------+
table deals_user_actions
+---------+---------+
| deal_id | user_id |
+---------+---------+
table locations
+----+-----------+----------+
| id | longitude | latitude |
+----+-----------+----------+
Мой исходный рабочий запрос был:
SELECT d.id, d.title
FROM deals d
JOIN locations l ON l.id = d.location_id
WHERE ST_Distance_Spheroid(ST_MAKEPOINT(l.longitude, l.latitude), ST_MAKEPOINT(18, 59), 'SPHEROID[\"WGS 84\",6378137,298.257223563]') < 50
Но мне нужно выбрать сделки, которые имеют только определенное количество действий пользователя, например:
SELECT
d.id,
d.title,
COUNT(dua.deal_id) AS numUserActions
FROM deals d
JOIN locations l ON l.id = d.location_id
JOIN deals_user_actions dua ON dua.deal_id = d.id
WHERE
ST_Distance_Spheroid(ST_MAKEPOINT(l.longitude, l.latitude), ST_MAKEPOINT(18, 59), 'SPHEROID[\"WGS 84\",6378137,298.257223563]') < 50
AND numUserActions == 10
Но вот он жалуется об отсутствии столбцов d.id, l.longitude и l.litude в предложении GROUP BY. Но когда я добавляю их, в запросе возвращается только один результат.
Итак, как бы вы рекомендовали изменить запрос, чтобы дать результат, обусловленный таблицей COUNTed JOINed?
или вы можете удалить '' d.id' из select' – potashin