SQL запрос сначала с одной, затем со второй таблицы
Необходимо сделать выборку данных из одной таблицы, а затем присоединить данные из другой таблицы.
Первый запрос (получение списка последних пользователей):
SELECT uid, username, gender, age, last_login FROM users
WHERE isAnonymous = '0'
AND last_login < NOW()
AND uid NOT IN ('12345678', '12345677')
ORDER BY last_login DESC
LIMIT 20
Второй запрос (найти в таблице загруженных изображений пользователя картинку, которая помечена как главная и проверена ) :
SELECT picture FROM uploads WHERE uid = '123' AND checked = '1' AND profile_picture = '1'
Пробую следующий запрос:
SELECT users.uid, username, gender, age, last_login, picture FROM users
LEFT JOIN uploads ON uploads.uid=users.uid
WHERE users.isAnonymous = '0'
AND uploads.profile_picture = '1'
AND uploads.checked = '1'
AND users.last_login < NOW()
AND users.uid NOT IN ('12345678', '12345677')
ORDER BY users.last_login DESC
LIMIT 100
Но выборка работает не правильно: запрос сразу ищет пользователей по всем условиям. Необходимо сначала выбрать последних пользователей, а затем присоединить картинку, если есть.
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Вы left join превратили в inner join поставив условия
AND uploads.profile_picture = '1'
AND uploads.checked = '1'
Переделайте их с возможностью отсутствия и будет желаемый результат.
AND (uploads.uid is null or uploads.profile_picture = '1'
AND uploads.checked = '1')