Запрос SQL JOIN для получения данных с GROUP BY только для одной таблицы - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь получить данные из нескольких таблиц, в которых у меня есть один продукт, детали которого распределены по нескольким таблицам. Вот один запрос, который я использую:

SELECT 
    fp.id, fp.name, fp.slug, fp.status, fp.approved, fp.created_at, fp.updated_at,
    fc.name as cat_name, fc.slug as category_slug, 
    ff.filepath,
    fdp.type, fdp.sku, fdp.regular_price, fdp.sale_price

FROM `foduu_products` fp 

JOIN `foduu_category_product` fcp 
ON fp.id = fcp.product_id

JOIN `foduu_filemanager` ff 
on fp.filemanager_id = ff.id 

JOIN `foduu_categories` fc 
on fcp.category_id = fc.id 

JOIN `foduu_details_product` fdp 
ON fp.id= fdp.product_id 

where fcp.category_id in (39,155,30,41,51)

group by fdp.product_id           <<<<--------------------  Here is the problem

ORDER by fp.id ASC

Когда я использую GROUP BY, чтобы получить данные из foduu_details_product, где хранятся несколько записей для одной product_id. Когда я выполняю этот запрос, я получаю эту ошибку.

#1055 - Expression #8 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'foduu-ecommerce-cms.fc.name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

Не понимаю, почему GROUP BY всегда дает мне эти ошибки. Любые предложения, как я могу улучшить свой запрос здесь?

Вот таблица базы данных SQL для справки:

http://vbought.com/products%20table.sql

Спасибо (заранее)!

1 Ответ

0 голосов
/ 11 мая 2018

В вашем запросе нет агрегатной функции, поэтому вам следует в первую очередь усомниться в использовании этого конкретного оператора.

Вы находитесь в "sql_mode = only_full_group_by", поэтому вам нужно повторять каждый столбец в выборке, который не используется в статистической функции (Max, Sum, Count ...) в выражении group by.

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