私はMySQLデータベースに2つのテーブルを持ち、1つはデータベース内のすべてのブックのライブラリで、もう1つは本に対応する個々のローを含んでいますユーザーのライブラリに保存します。例えばMySQL Left Outer Join、ユーザに属する2番目のテーブルの項目を除外
:
ライブラリ表
`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で実行すると、コレクションテーブルにないすべての書籍が作成されます。
ただし、特定のユーザーに制限するにはどうすればよいですか。たとえば、上記のダミーデータでは、ユーザー2
がクエリを実行するとブック1になり、ユーザー1
がクエリを実行する場合はブックはありません。
AND user=[id]
を追加するだけでは機能しません。JOIN
という非常に限られた知識があり、私は本当にどこにもいません。
また、返される結果のID(表示されたクエリのうち、機能しないもの)は0です - 返されるIDがlibrary.id
のものであることを確認するにはどうすればよいですか?結合テーブル内NULL
は、ユーザーが彼/に持っていないために行(図書)となりますが何であれ、あなたは、特定のユーザーが持っている書籍のみをごLEFT JOIN
選択を絞り込む必要があるでしょう
実際のテーブル構造を表示し、発生したエラー(もしあれば)をお知らせください。あなたの質問には、あなたのテーブルの説明にない「記事」というフィールドがあります。 – bpeterson76
おっと - 私はコピーして貼り付けたときに記事として残しました。それは "本"でなければなりません。私は質問を変更しました。 –