выберите только 1 строку в 1 поле, которое имеет 2 строки - PullRequest
0 голосов
/ 25 апреля 2019

У меня проблема при получении данных из моей базы данных.

проблема в том, что я хочу получить только 1 строку из 1 поля.

пример:

в таблице ms_file у меня есть 2 поля (product_id, path)

  1. .... / реж / bg.1
  2. .... / реж / bg.2

с тем же идентификатором продукта.

если я использую соединение с этой таблицей (ms_file), я получаю сообщение об ошибке при использовании группы

список не входит в предложение GROUP BY и содержит неагрегированный столбец .... который функционально не зависит от столбцов в предложении GROUP BY;

потому что по этому запросу мы получили две разные строки с одинаковым идентификатором продукта

как это решить?

select ms_product.*, ms_file.path, users.name as users_name, ms_subcategory.name as subcategory from ms_product 
        left join users ON users.id = ms_product.users_id
        left join ms_subcategory ON ms_subcategory.id = ms_product.subcategory_id
        left join ms_file ON ms_file.product_id = ms_product.product_id
        where ms_product.status = "A" group by ms_product.product_id order by ms_product.created_at desc LIMIT 4

если я не ввел GROUP BY в этом запросе выше, я не получил ошибку. но этот запрос покажет 2 строки из ms_file

если я использовал GROUP BY в этом запросе выше, я получил ошибку.

1 Ответ

0 голосов
/ 25 апреля 2019

решено, я использовал группу concat и взорвался через php, чтобы получить первый массив.

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