Как из этих таблиц получить полный вывод первой таблицы item и в дополнении только первую запись поля name_file_jpg из второй таблицы?
То есть должно получиться что-то в стиле
id | name | color | name_file_jpg
1 | Апельсин | желтый | wauhmaifml
2 | Яблоко | красное | wauhawffml
3 | Груша | зелёная | nalwfjnawfb
Для правильного вопроса надо знать половину ответа
SELECT `i`.`id`, `i`.`name`, `i`.`color`, `p`.`name_file_jpg`
FROM `item` AS `i`
LEFT JOIN (
SELECT `id_item`, MIN(`id`) AS `min`
FROM `photo`
GROP BY `id_item`
) AS `m` ON `m`.`id_item` = `i`.`id`
LEFT JOIN `photo` AS `p` ON `p`.`id` = `m`.`min`
mir546: Оно корректнее. При группировке GROUP BY все выбираемые данные должны использоваться либо в агрегатных функциях, либо в самом GROUP BY.
Ваше решение работать в таком виде не будет, поскольку поле `id` есть в обоих таблицах, возникнет неопределённость. Но даже если это исправить, то какое именно значение `name_file_jpg` будет выбрано из возможных - MySQL не гарантирует.
Кроме того, в MySQL 5.7 по умолчанию стоит строгий режим, и запрос будет выдавать ошибку, показывая, что поля `name`, `color` и `name_file_jpg` не входят ни в группировку ни в агрегатные функции.
Получается что если запрос будет правильным, то есть таким
SELECT `i`.`id`, `i`.`name`, `i`.`color`, `p`.`name_file_jpg` FROM `item` AS `i`, `photo` AS `p` WHERE `p`.`id_item` = `i`.`id` GROUP BY `i`.`id` ;
то от решения с JOIN-ами его будет отличать только то, что не известно какое именно значение `name_file_jpg` будет выбрано из возможных.
Или есть ещё какие-то тонкости?