php - SQL - 返回用户拥有的书籍

标签 php mysql sql database relational-database

我在做我在我的大学项目中执行查询时遇到了一些问题。我有一个网站,用户可以在其中分享他们读过的书,我有一个页面,用户可以在其中查看他添加的书(他拥有的书)。

为此,我相信我需要登录用户的 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/

相关文章:

php - MySQL 查询 WHERE 区分大小写

php - 脚本在实时服务器上运行良好但在 wamp 上运行不正常

php 将字符串分成字符

php - 在 WordPress 中处理表单的 PHP 文件应该保存在哪里?

mysql - 检查一个值是否存在于 MySQL 表中

php - 使用以下数据库布局在 mysql 中创建 View 的最佳方法是什么?

mysql - SQL 查询将实体的子实体放入与父实体相同的行

sql - SSMS 2005 或 2008 中自动格式化查询语法的选项?

MySQL - 查找用户的第一个推荐人

mysql 左连接问题