Mysql left join не возвращает ничего если нет во второй таблице, как исправить?
Есть две таблички. Пользователи и фотки.
Делаю запрос.
SELECT users.*, up.filename, up.type FROM `users` LEFT JOIN users_photos AS up ON up.ancor_id = users.id WHERE up.type = 'main' GROUP BY users.id ORDER BY -users.sort DESC
Если фотки нет то результат пустой. Как сделать так что если нет фотки то выдаются просто данные из таблици users?
Обратить внимание на условие в предикате WHERE up.type = 'main' и понимать порядок запроса.
Вы в начале джойните таблицы по условию в ON, а потом фильтруете результат. То есть если нет фотографии, поля во второй таблице не имеют значения (NULL) следовательно предикат отрабатывает и возвращает вам пустые строки.