SELECT id,businessName,GROUP_CONCAT(id) FROM tbl_business LIMIT 0,1
Вышеупомянутый запрос дает мне результаты ниже
1 Camp San Fransisco 1,4
Теперь, если я применяю GROUP BY и ограничиваю тот же запрос, столбец GROUP_CONCAT не дает мне те же результаты, что и раньше.
SELECT id,businessName,GROUP_CONCAT(id) FROM tbl_business GROUP BY id LIMIT 0,1
Результаты запроса
1 Camp San Fransisco 1
Я использую идентификатор GROUP BY для извлечения уникальных записей с некоторыми условиями где.
Есть ли какие-либо альтернативы для использования GROUP_BY с GROUP_CONCAT или любымдругие методы для MySQL, которые могут быть полезны здесь.
Я хочу сохранить результаты первого запроса с идентификатором, поэтому мне просто нужно вызвать второй запрос на основе идентификатора первого результата, если это возможно.Я не могу удалить идентификатор GROUP BY из-за LEFT JOIN для нескольких таблиц, и от него зависят некоторые SUB-запросы
Приведенные выше запросы предназначены только для пояснения, исходный запрос намного длиннее.
Actual Query:
SELECT bs.id,bs.businessName,bs.businessDesc,bs.latitude,bs.longitude,bs.slug,bs.contactNo,bs.location,bs.isAddedBy,bs.createdDate,cat.categoryName as category,GROUP_CONCAT(DISTINCT(bcat.categoryName) SEPARATOR ', ') as subcategory,
(SELECT COUNT(id) FROM tbl_reviews WHERE referenceId = bs.id) as totalReview,
(SELECT CEIL(AVG(rating)) FROM tbl_reviews WHERE referenceId = bs.id) as avgRating,
(SELECT imageName FROM tbl_business_images as bimg WHERE bimg.businessId = bs.id LIMIT 1) as bImage,
(
(ACOS
(
SIN(37.09024 * PI() / 180) * SIN(bs.latitude * PI() / 180) + COS(37.09024 * PI() / 180) * COS(bs.latitude * PI() / 180) * COS(
(-95.712891 - bs.longitude) * PI() / 180)
)* 180 / PI()
) * 60 * 1.1515 * 1.609344
) as distance,
(SELECT
(DATEDIFF(bs.createdDate,NOW()) * 5) +
((SELECT COUNT(id) FROM tbl_business_images WHERE businessId = bs.id) * 2) +
((SELECT count(id) FROM tbl_business_views WHERE businessId = bs.id) * 2) +
((SELECT COUNT(id) FROM tbl_reviews WHERE referenceId = bs.id) * 10))
as totalPoint
FROM tbl_business as bs
LEFT JOIN tbl_category as cat
ON bs.businessCat = cat.id
LEFT JOIN tbl_business_subcategories as bsubs
ON bs.id = bsubs.businessId
LEFT JOIN tbl_category as bcat
ON bsubs.subcategoryId = bcat.id
WHERE bs.isActive = 'y'
GROUP BY bs.slug
Текущий вывод запроса:
id businessName businessDesc latitude longitude slug contactNo location isAddedBy createdDate category subcategory totalReview avgRating bImage distance totalPoint
1 test test 45.14 -122.82 test 1234567890 USA c 2018-09-29 11:38:58 Category Subcategory1,subcategory2 1 5 image.png 2382.763331498852 -4
Любая помощь приветствуется.