Я использую базу данных mysql для хранения компаний в одном городе. И я получаю их, используя следующий запрос. Однако он не сортирует результат так, как я хочу. Я хочу, чтобы результирующие компании были заказаны следующим образом: Первым приоритетом являются компании, расстояния которых ниже 6 KM, и эти компании должны быть заказаны по FIELD (sectorid, ....) параметр, второй приоритет это компании, расстояния которых больше 6KM, и эти компании должны заказываться одинаково (с параметром FIELD)mysql несколько столбцов порядка
Но мы не смогли найти какое-либо решение нашей проблемы. Я показываю правильные результаты и наш запрос ниже. Я был бы рад, если кто-то укажет мне правильное направление
Пример Результат Должно быть что-то вроде этого:
Company Name: Distance: SectorID:
CompanyA 3 10
CompanyB 2 11
CompanyC 4 13
CompanyX 8 10
CompanyY 7 11
CompanyZ 9 13
Выгодная Запрос:
SELECT companies.id,
companies.name,
companies.summary,
companies.ratingScore,
companies.companyLogo,
companies.sectorId,
companies.lattitude,
companies.longitude,
companies.address,
company_photos.photoUrl,
(SELECT EXISTS
(SELECT 1
FROM favorites
WHERE favorites.companyId = companies.id
AND userId = 109)) AS favorited,
(SELECT COUNT(*)
FROM ratings
WHERE companies.id = ratings.companyId
AND ratings.isReviewed = 1) AS comments,
(ACOS(SIN(RADIANS(41.212641))*SIN(RADIANS(lattitude))+COS(RADIANS(41.212641))*COS(RADIANS(lattitude))*COS(RADIANS(longitude)-RADIANS(29.020058))) *6371) AS distance
FROM companies
LEFT JOIN company_photos ON company_photos.companyId = companies.id
AND company_photos.photoOrder = 0
WHERE companies.isActivated = 1
AND companies.isReviewed = 1
AND companies.isCustomer = 1
AND companies.isBlocked = 0
ORDER BY FIELD (sectorId, 10, 11, 13, 7, 12, 2, 15, 17), distance
Результат I» m Получение:
Company Name: Distance: SectorID:
CompanyA 3 10
CompanyX 8 10
CompanyB 2 11
CompanyY 7 11
CompanyC 4 13
CompanyZ 9 13
Благодаря
Какой результат вы получаете? –
UNION ALL, используя 6KM меньше, чем правило. – user3741598
Также вам нужна запятая в вашем ORDER BY. Он должен читать ORDER BY FIELD (sectorId, 10, 11, 13, 7, 12, 2, 15, 17), расстояние –