Query Builder в Laravel (GROUP BY) - PullRequest
       13

Query Builder в Laravel (GROUP BY)

0 голосов
/ 23 марта 2019
$bo_facilities = DB::select('SELECT 
                a.bo_facility_code,
                a.bo_facility_groupcode,
                a.bo_number,
                a.bo_indYesOrNo,
                a.bo_indLogic,
                b.bo_content_facility_description
                FROM bo_facilities AS a 
                RIGHT JOIN bo_content_facilities AS b
                ON b.bo_content_facility_code = a.bo_facility_code AND b.bo_content_facility_facilityGroupCode = a.bo_facility_groupcode

                WHERE a.bo_hotel_code =  "'.$hotel['code'].'"  GROUP BY b.bo_content_facility_description');

Сообщение об ошибке:

"message": "SQLSTATE[42000]: Syntax error or access violation: 1055
'philex.main.a.bo_facility_code' isn't in GROUP BY (SQL: 

SELECT a.bo_facility_code,
       a.bo_facility_groupcode,
       a.bo_number,
       a.bo_indyesorno,
       a.bo_indlogic,
       b.bo_content_facility_description
FROM   bo_facilities AS a
       right join bo_content_facilities AS b
               ON b.bo_content_facility_code = a.bo_facility_code
                  AND b.bo_content_facility_facilitygroupcode =
                      a.bo_facility_groupcode
WHERE  a.bo_hotel_code = "'.$hotel['code'].'"
GROUP  BY b.bo_content_facility_description 

)",

Я получил эту ошибку из-за метода GROUP BY.

1 Ответ

0 голосов
/ 23 марта 2019

Взгляните на агрегатные функции в mysql.

Если вы группируете свои результаты по b.bo_content_facility_description, остальные поля в SELECT, которых нет в GROUP BY, должны агрегироваться с такой функцией, как SUM, COUNT и т. Д.

Группировка по этому единственному полю без какого-либо разделения на другие поля имеет смысл, поскольку вы не указываете, как объединять другие поля, чтобы получить единственную запись для сгруппированного поля.

Я предлагаю вам прояснить, каких результатов вы ожидаете.

...