MySQL Jointure Externe Gauche, à l'exclusion d'Éléments dans le Deuxième Tableau Appartenant à l'Utilisateur

J'ai deux tables dans ma base de données MySQL, l'un est une bibliothèque de tous les livres dans la base de données, et l'autre contenant des lignes correspondant à des livres qui sont dans une bibliothèque.

Par exemple:

Bibliothèque De Table

 `id`        `title`...
=====        ===========
  1          Moby Dick
  2          Harry Potter

Collection Table

 `id`        `user`      `book`
=====        ======      =======
  1            1            2
  2            2            2
  3            1            1

Ce que je veux faire est d'exécuter une requête qui affiche tous les livres qui sont pas dans une collection de l'utilisateur. Je peux exécuter cette requête pour afficher tous les livres qui ne sont pas dans tout collection de l'utilisateur:

SELECT * 
FROM  `library` 
LEFT OUTER JOIN  `collection` ON  `library`.`id` =  `collection`.`book` 
WHERE  `collection`.`book` IS NULL

Cela fonctionne bien dans la mesure où je peux dire. L'exécution de cette dans PHPMyAdmin entraînera dans tous les livres qui ne sont pas dans la collection de la table.

Cependant, comment puis-je limiter à un certain utilisateur? Par exemple, avec les données factices, je veux le livre 1 de résultat si l'utilisateur 2 exécute la requête, et pas de livres si l'utilisateur 1 exécute la requête.

Simplement l'ajout d'un AND user=[id] ne fonctionne pas, et avec ma une connaissance très limitée de JOIN déclarations, je ne suis pas vraiment n'importe où.

Aussi, l'ID de résultats retournés (de requête ci, ce qui ne veut pas faire ce que je veux, mais ne fonctionne pas) est 0-- comment puis-je m'assurer que l'ID retourné, c'est que de library.id?

s'il vous plaît montrer la réelle structure de la table et de nous donner l'erreur (le cas échéant) que vous allez rencontrer. Votre requête mentionne un champ appelé "article" qui n'est pas dans votre tableau de descriptions.
Oups-- je l'ai laissé comme article quand j'ai copié et collé. Il doit être "livre". J'ai changé la question.

OriginalL'auteur Andrew M | 2012-06-15