Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask项目的TSQL查询_Python_Sql - Fatal编程技术网

Python Flask项目的TSQL查询

Python Flask项目的TSQL查询,python,sql,Python,Sql,[附表] 我想星期一为学校完成一个项目。我有两个表(用户和书籍),它们与我称为收藏夹的joiner表有多对多的关系。我在一个网页(python/flask/jinja)中显示图书标题,并且有一个可以显示所有图书标题的查询,但问题是,如果当前登录用户不喜欢某本书,我必须在每本书下面添加一个链接(添加到收藏夹) 我需要在同一个div中显示一个查询 我的表格在上面的图像链接中链接 我的选择查询 select * from users join favorites on users.id = fav

[附表]

我想星期一为学校完成一个项目。我有两个表(用户和书籍),它们与我称为收藏夹的joiner表有多对多的关系。我在一个网页(python/flask/jinja)中显示图书标题,并且有一个可以显示所有图书标题的查询,但问题是,如果当前登录用户不喜欢某本书,我必须在每本书下面添加一个链接(添加到收藏夹)

我需要在同一个div中显示一个查询

我的表格在上面的图像链接中链接

我的选择查询

select *  from users  join favorites on users.id = favorites.user_id  join books on books.id = favorites.book_id

我的问题是,当我有一本书被当前用户和另一个用户喜欢时。如何筛选出未登录用户喜欢的书籍?

您的查询将选择所有用户与其书籍之间的关系。如果只想查找当前用户喜欢的书籍,则应使用“WHERE”子句:

select *  from users 
join favorites on users.id = favorites.user_id 
join books on books.id = favorites.book_id 
where users.id = current_user_id
编辑:

如果要显示所有书籍并同时显示特定用户喜欢的书籍:

select b.*,u.* from books as b
left join favorites as f on f.book_id = b.id
left join users as u on u.id = f.user_id and u.id = current_user_id
group by b.id
如果当前用户没有将该书作为收藏夹,则“用户”列将为空

您还可以创建一列,表示收藏状态:

select b.*,u.*,IF(u.id is null,0,1) as favorited
from books as b
left join favorites as f on f.book_id = b.id
left join users as u on u.id = f.user_id and u.id = current_user_id
group by b.id

您的查询选择所有用户及其书籍之间的关系。如果只想查找当前用户喜欢的书籍,则应使用“WHERE”子句:

select *  from users 
join favorites on users.id = favorites.user_id 
join books on books.id = favorites.book_id 
where users.id = current_user_id
编辑:

如果要显示所有书籍并同时显示特定用户喜欢的书籍:

select b.*,u.* from books as b
left join favorites as f on f.book_id = b.id
left join users as u on u.id = f.user_id and u.id = current_user_id
group by b.id
如果当前用户没有将该书作为收藏夹,则“用户”列将为空

您还可以创建一列,表示收藏状态:

select b.*,u.*,IF(u.id is null,0,1) as favorited
from books as b
left join favorites as f on f.book_id = b.id
left join users as u on u.id = f.user_id and u.id = current_user_id
group by b.id

是的,我理解WHERE子句,但问题是我正在使用python/flask在网页中显示结果。我需要使用一个查询来显示所有的书,然后在每本书下面都有一个链接,如果用户还没有喜欢那本书,那么链接到最喜欢的那本书。因此,我需要获取所有书籍,然后在有几个人和当前登录的用户都喜欢这本书时,以某种方式缩小范围。对不起,这有道理吗?这就是诀窍,维克多!非常感谢你的帮助!我很感激!没问题!如果答案对你有用。要将答案标记为已接受,请单击答案旁边的复选标记,将其从灰色切换为填写的“谢谢”。是的,我理解WHERE子句,但问题是我正在使用python/flask在网页中显示结果。我需要使用一个查询来显示所有的书,然后在每本书下面都有一个链接,如果用户还没有喜欢那本书,那么链接到最喜欢的那本书。因此,我需要获取所有书籍,然后在有几个人和当前登录的用户都喜欢这本书时,以某种方式缩小范围。对不起,这有道理吗?这就是诀窍,维克多!非常感谢你的帮助!我很感激!没问题!如果答案对你有用。要将答案标记为已接受,请单击答案旁边的复选标记,将其从灰色切换为填写的“谢谢”。我就这么做了。