У меня есть 3 таблицы со следующими полями:
- org (org_id, org_name, location)
- office (office_id, office_name, location, org_id )
- project (project_id, project_name, location)
Я хочу найти ближайшие офисы кданный проект
SELECT office.office_name, org.org_name,
st_distance_sphere(office.location, project.location)*0.001 as
distance
FROM office JOIN org JOIN project
WHERE office.org_id=org.org_id AND
project.project_id=7
ORDER BY distance asc;
Приведенный выше запрос работает и дает мне самые близкие офисы к проекту, но мне нужно получить только 1 ближайший офис на организацию
Следовательно, япопробовал, следующее с использованием semi-join
SELECT office.office_name, org.org_name,
st_distance_sphere(office.location, project.location)*0.001 as
distance
FROM office JOIN org JOIN project
INNER JOIN
( SELECT org.org_id as orgid1,
min(st_distance_sphere(office.location, project.location)*0.0001) as
distance1
FROM office JOIN org JOIN project
WHERE
office.org_id=org.org_id and project.project_id=7
GROUP BY org.org_id
) AS t
ON t.orgid1=org.org_id and t.distance1=min(st_distance_sphere(office.location,project.location)*0.001)
WHERE office.org_id=org.org_id AND project.project_id=7 ;
Используя это, я получаю следующую ошибку, и причина, похоже, заключается в функции min (st_distance_sphere) .Устранение, которое устраняет ошибку, но я не получаю желаемых результатов.
ОШИБКА 1111 (HY000): недопустимое использование групповой функции
Что я делаю неправильно?Любые мысли высоко ценятся.Спасибо