Так вот моя проблема. У меня есть две таблицы, photos
и users_homepage_photos
. На моем сайте пользователи должны иметь возможность выбирать загруженные фотографии и отмечать их, чтобы они отображались на главной странице сайта.
В таблице photos
хранятся все данные фотографии (URL-адрес изображения, имя, подпись и т. Д.), А в таблице users_homepage_photos
содержится таблица перекрестных ссылок, состоящая из id
, user_id
и * 1009. *.
Я хочу написать запрос, который получит все фотографии доступные для использования на домашней странице , поэтому выберите все фотографии, которых НЕ в таблице users_homepage_photos
.
Мой запрос на данный момент таков (с photos.user_id
равным 4 в качестве моего идентификатора тестового пользователя):
SELECT photos.id, photos.user_id, photos.s3_thumb, photos.`name`, photos.`date`, photos.`caption`,
users_homepage_photos.*
FROM photos
JOIN users_homepage_photos ON users_homepage_photos.`photo_id` != photos.id AND users_homepage_photos.`user_id` = 4
WHERE photos.user_id = 4
Вот проблема: - когда у пользователя есть 1 фотография уже в таблице users_homepage_photos
, запрос работает отлично и выбирает все фотографии, кроме той, которая уже есть.
Однако , если у пользователя НЕТ фотографий на домашней странице, запрос выбирает 0 строк. Как мне получить все строки в этом случае?
Спасибо!
Jack
РЕДАКТИРОВАТЬ : снимки экрана с примерами данных.
SELECT * FROM users_homepage_photos

SELECT * FROM photos WHERE user_id = 4

Наконец, когда я запускаю запрос, который отправил @gbn (вариант LEFT OUTER JOIN
моего запроса):

Надежда, которая проливает свет на ситуацию.