MySQL Left Outer Join, Ausschließen Elemente, die in der Zweiten Tabelle Gehörenden Benutzer

Ich habe zwei Tabellen in meiner MySQL-Datenbank ist eine Bibliothek, die alle Bücher in der Datenbank, und die andere ist mit einzelnen Zeilen entsprechend die Bücher sind in einer Benutzer-Bibliothek.

Beispiel:

Bibliothek Tabelle

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

Sammlung Tabelle

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

Was ich will zu tun ist, führen Sie eine Abfrage, die Ihnen zeigen, all die Bücher, die nicht in der Sammlung eines Benutzers. Kann ich diese Abfrage ausführen, um alle Bücher, die nicht in alle user ' s collection:

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

Das funktioniert gut soweit ich das sagen kann. Dies wird ausgeführt in PHPMyAdmin führen alle Bücher, die nicht in der collection table.

Jedoch, wie kann ich verhindern, dass einem bestimmten Benutzer? Zum Beispiel, mit den oben genannten dummy-Daten, ich will Buch 1 als Ergebnis, wenn Benutzer 2 läuft die Abfrage, und keine Bücher, wenn der Benutzer 1 führt die Abfrage aus.

Nur das hinzufügen einer AND user=[id] funktioniert es nicht und mit meinem äußerst begrenzten wissen über JOIN Aussagen, die ich bin nicht immer überall wirklich.

Auch, die ID der Ergebnisse zurückgegeben wird (der Abfrage angezeigt, die Sie nicht tun was ich will, aber funktioniert) 0 ist-- wie kann ich sicherstellen, dass die ID zurückgegeben wird, die von library.id?

  • bitte zeigen Sie die tatsächliche Struktur der Tabelle und geben Sie uns den Fehler (wenn überhaupt), du bist der Begegnung. Ihre Abfrage erwähnt ein Feld namens "Artikel", die nicht in der Tabelle Beschreibungen.
  • UPS-- ich habe es als Artikel, wenn ich kopiert und eingefügt werden. Es sollte sein "Buch". Ich habe mich verändert die Frage.
InformationsquelleAutor Andrew M | 2012-06-15
Schreibe einen Kommentar