我在做我在我的大学项目中执行查询时遇到了一些问题。我有一个网站,用户可以在其中分享他们读过的书,我有一个页面,用户可以在其中查看他添加的书(他拥有的书)。
为此,我相信我需要登录用户的 ID,我将其存储在 session PHP 变量中,用户 ID 位于表 users 中。 有关书籍的信息存储在表 books 中,它有自己的 id 主键。 然后,为了显示谁拥有我有一个表 owns_book (id, u_id, book_id)。
现在为了测试,我总共有 26 本书,其中 25 本书是由 id 为 57 的用户添加的,1 本书是由 id 为 49 的用户添加的。 当我运行此查询时:
SELECT id, title, author, category, cover, added, user_id FROM books, users
WHERE user_id=49 AND id IN(SELECT book_id FROM owns_book)
AND user_id IN(SELECT u_id FROM owns_book)
结果一团糟,我没有得到预期的一本书,我还得到了其他用户添加的书。 有人可以告诉我我需要的正确查询,或者我是否需要更改表的结构?谢谢。
编辑:
users(user_id, ...)
books(id, title, author, publisher, published, cover... )
owns_book(id, u_id, book_id)
最佳答案
您似乎想要从 books 表中获取特定客户拥有的所有内容。如果是这样的话,你可以试试
SELECT * FROM books
JOIN owns_book
ON books.id = owns_books.book_id
WHERE owns_book.user_id = 49
这将从您的 books 表中选择所有 Prop ,然后根据等于 owns_book 的 book_id 的书的 ID 加入表。最后,添加参数 - 你只想看到 user_id = 49。
关于php - SQL - 返回用户拥有的书籍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48409016/