Tengo dos tablas en mi base de datos MySQL, una es una biblioteca de todos los libros de la base de datos y la otra contiene filas individuales correspondientes a los libros en la biblioteca de un usuarioMySQL Left Outer Join, Excluye elementos en la segunda tabla perteneciente al usuario
Por ejemplo:
Tabla Biblioteca
`id` `title`...
===== ===========
1 Moby Dick
2 Harry Potter
Tabla Colección
`id` `user` `book`
===== ====== =======
1 1 2
2 2 2
3 1 1
Lo que quiero hacer es ejecutar una consulta que mostrará todos los libros que están no en la colección de un usuario. Puedo ejecutar esta consulta para mostrar todos los libros no en la colección de cualquier usuario:
SELECT *
FROM `library`
LEFT OUTER JOIN `collection` ON `library`.`id` = `collection`.`book`
WHERE `collection`.`book` IS NULL
Esto funciona muy bien en lo que puedo decir. Ejecutar esto en PHPMyAdmin dará como resultado todos los libros que no están en la tabla de recopilación.
Sin embargo, ¿cómo puedo restringir eso a un determinado usuario? Por ejemplo, con los datos ficticios anteriores, deseo que aparezca el libro 1 si el usuario 2
ejecuta la consulta, y no hay libros si el usuario 1
ejecuta la consulta.
Simplemente agregando un AND user=[id]
no funciona, y con mi conocimiento extremadamente limitado de las declaraciones JOIN
realmente no llego a ningún lado.
Además, el ID de los resultados que se devuelven (de la consulta que se muestra, que no hace lo que quiero pero funciona) es 0-- ¿Cómo me aseguro de que la ID devuelta sea la de library.id
?
muestra la estructura real de la tabla y nos da el error (si corresponde) que estás encontrando. Su consulta menciona un campo llamado "artículo" que no está en las descripciones de su tabla. – bpeterson76
Vaya, lo dejé como artículo cuando copié y pegué. Debe ser "libro". He cambiado la pregunta. –