У меня есть отношение собственности между двумя таблицами,
скажи users(int user_id)
и user_books(int user_book_id,int user_id,int book_id)
и две дополнительные таблицы books(int book_id, varchar book_title, int author_id)
и authors (int author_id, varchar author_name)
.
Учитывая конкретный user_id
Я хочу получить книги, которые пользователь НЕ ИМЕЕТ, где авторы написали, что у него есть другие книги, написанные им.
Так что, если у пользователя есть BOOK1 (то есть существует строка для этого в user_books
) и нет BOOK2 и BOOK3, то, где написано тем же автором, что и BOOK1, я хочу получить идентификаторы для BOOK2 и BOOK3.
Полагаю, я могу сделать это, используя SELECT WHERE NOT IN (), но по соображениям производительности я ищу решение на основе объединения.