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

Python SQLite从变量匹配的三个表中选择,python,sql,database,sqlite,Python,Sql,Database,Sqlite,显然,SQL查询初学者 因此,我有3个数据表:帐户、所有者、车辆 这三个变量通过一个公共变量“User_Name”联系在一起 我想从这三个表中获取用户名与搜索变量匹配的所有项目。因此,如果我搜索用户名为“Mike”的用户,将显示用户名为“Mike”的三个表中的所有项目 我有以下使用常规“JOIN”的查询,但是如何更改它以使用搜索变量从所有表中选择与该变量匹配的所有表 cursor.execute("SELECT * FROM Account JOIN Owner ON(Account.U

显然,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个表中选择的那些,没有我想要的变量匹配

简言之:


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

由于标记指示Python,我将使用Python显示答案,假设
Search\u 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并将其格式化为更可读的形式,事情就会变得更加明显:

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'
上述查询将筛选表
帐户
中包含搜索到的
用户名
的所有记录。联接将匹配具有匹配联接条件的其他表中的记录


请注意,如果在任何表中都没有与搜索值匹配的
用户名
,则结果中不会显示任何记录。例如,在表
Account
中有一条带有
User\u Name='Joe'
的记录,但在表
Vehicle
Owner'
中没有关于
'Joe'
的记录。结果将不会有“Joe”的记录。

此问题的答案可能会有帮助:添加
WHERE Account.User\u Name=%s
,并替换搜索名称。我希望能够为您提供“显然”一词的使用分数。不,这不是讽刺。成群结队的人问问题,不知怎的想象我们说不出来啊,所以我只需要在末尾加上一个“WHERE”条款。在问这个问题之前,我尝试了这个解决方案,但我想我一定是得到了一个错误的语法。这解决了我的问题。非常感谢。