SQLite从三个变量匹配的表中选择

2024-04-19 04:27:32 发布

您现在位置:Python中文网/ 问答频道 /正文

显然,SQL查询初学者。在

所以我有3个数据表:账户,车主,车辆。在

这三个变量通过一个公共变量“User_Name”联系在一起。在

我想从这三个表中获取用户名与我的搜索变量匹配的所有项。因此,如果我搜索用户名为“Mike”的用户,则会显示用户名为“Mike”的三个表中的所有项目。在

我有一个使用常规“JOIN”的查询,但是如何更改它以使用搜索变量从所有表中选择与该变量匹配的所有查询?在

    cursor.execute("SELECT * FROM Account JOIN Owner ON(Account.User_Name = Owner.User_Name) JOIN Vehicle ON(Account.User_Name = Vehicle.User_Name)")

我看过其他关于“从多个表中选择”的堆栈线程,但是它们都只从2个表中选择,而从3个表中选择的线程没有我想要的变量匹配。在

所以简而言之:

搜索三个表并获取公共列变量与搜索字符串匹配的所有行。在


Tags: 用户namesqlon账户account线程数据表
1条回答
网友
1楼 · 发布于 2024-04-19 04:27:32

由于您的标记表示Python,我将使用Python显示答案,假设search_user变量包含我们要搜索的用户名:

cursor.execute("SELECT * FROM Account JOIN Owner ON(Account.User_Name = Owner.User_Name) JOIN Vehicle ON(Account.User_Name = Vehicle.User_Name) WHERE Account.User_Name='%s'" % search_user)

如果我们只提取SQL并以更易读的形式格式化它,事情就更明显了:

^{pr2}$

上面的查询将过滤表Account中包含搜索的User_Name的所有记录。联接将匹配具有匹配联接条件的其他表中的记录。在

请注意,如果您没有与任何表中的搜索值匹配的User_Name,那么结果中将不会显示任何记录。例如,在表Account中有一个User_Name = 'Joe'的记录,但是在表Vehicle'Owner'中没有{}的记录。结果将没有'Joe'的记录。在

相关问题 更多 >