CodeByZen
@CodeByZen
php, js, my/mssql, sqlite, html, css, it-consult

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?
  • Вопрос задан
  • 3803 просмотра
Решения вопроса 1
@whats
Обратить внимание на условие в предикате
WHERE up.type = 'main' и понимать порядок запроса.
Вы в начале джойните таблицы по условию в ON, а потом фильтруете результат. То есть если нет фотографии, поля во второй таблице не имеют значения (NULL) следовательно предикат отрабатывает и возвращает вам пустые строки.

Переместите условие в ON.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы