我有兩個表之間的所有制關係, 說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)
。Mysql的加入尋找「失蹤」,「相關」行
給定一個具體的user_id
我想要得到的書籍,用戶沒有,如果由作者寫的,他確實有他們寫的其他書籍。
因此,如果用戶有BOOK1(即在user_books
中存在這一行),並且沒有BOOK2和BOOK3,這些BOOK2和BOOK3由與BOOK1相同的作者編寫,我希望獲得BOOK2和BOOK3的ID。
我想我可以使用SELECT WHERE NOT IN()來做到這一點,但出於性能方面的原因,我正在尋找一個基於聯接的解決方案。
您是否嘗試過使用外連接? – 2012-03-13 11:55:14
正如我所說的,我可以使用「select where not in」來寫這個,但我想使用連接。我知道它應該以某種方式使用左連接完成,但我不確定如何。 – epeleg 2012-03-13 12:34:38
我也遇到了一個問題,即某些用戶可能已經擁有多個單一的user_book,因此連接會多次返回作者ID。 – epeleg 2012-03-13 12:39:48