Можно ли использовать GROUP BY с GROUP_CONCAT в одном столбце с условием ограничения - PullRequest
0 голосов
/ 05 октября 2018
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

Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...