私の MySQL データベースには 2 つのテーブルがあります。1 つはデータベース内のすべての書籍のライブラリで、もう 1 つはユーザーのライブラリにある書籍に対応する個々の行を含んでいます。
例えば:
ライブラリ テーブル
`id` `title`...
===== ===========
1 Moby Dick
2 Harry Potter
コレクションテーブル
`id` `user` `book`
===== ====== =======
1 1 2
2 2 2
3 1 1
私がやりたいことは、ユーザーのコレクションに含まれていないすべての本を表示するクエリを実行することです。このクエリを実行して、どのユーザーのコレクションにも含まれていないすべての本を表示できます。
SELECT *
FROM `library`
LEFT OUTER JOIN `collection` ON `library`.`id` = `collection`.`book`
WHERE `collection`.`book` IS NULL
私が知る限り、これはうまく機能します。これを PHPMyAdmin で実行すると、コレクション テーブルにないすべての書籍が表示されます。
ただし、それを特定のユーザーに制限するにはどうすればよいですか? たとえば、上記のダミー データでは、ユーザーがクエリを実行すると書籍 1 が返され、ユーザー2
がクエリを実行すると書籍は返されません1
。
a を追加するだけでは機能しません。ステートメントAND user=[id]
に関する知識が非常に限られてJOIN
いるため、実際にはどこにも行きません。
また、返される結果のID(表示されているクエリの、私が望むことはしませんが機能します)は0です-返されたIDがのIDであることを確認するにはどうすればよいlibrary.id
ですか?