【问题标题】:Selecting data from multiple tables that have no foreign keys?从多个没有外键的表中选择数据?
【发布时间】:2019-07-17 07:36:39
【问题描述】:

我的python 文件中有这个当前的sqlite3 代码:

Data = Cursor.execute("""
    SELECT Username, Password
    FROM PatientTable
    WHERE Username = '{}'
""".format(Username))
Data = Data.fetchall()

数据库中有多个表:PatientTableDoctorTableManagerTable。每一个在第二列和第三列分别有UsernamePassword的属性。

问:我当前的代码仅从PatientTable 中选择数据,但我需要从所有三个表中选择数据确定每个数据项来自哪个表。

现在,我想我可以使用多个 SQL 语句来做到这一点,但这似乎太过分了。我曾考虑过使用JOIN,但没有外键 - 将数据库相互关联的键。

提前致谢。

【问题讨论】:

  • 您提到的3个表中的(用户名,密码)是否指向相同的用户?换句话说:Patient 表是否包含 Doctor 表也包含的记录?如果答案是否定的,则您无法加入表格。
  • 答案是否定的。
  • 请澄清您的问题。我不确定我是否理解问题所在以及您正在考虑的解决方案是什么。
  • 你回答了 - 没有简单的方法,相反,我可以使用三个单独的 SQL 语句。

标签: python sql flask sqlite


【解决方案1】:

您似乎在寻找 UNION。您可以为每个查询添加一个固定列,以区分结果集中的每条记录来自哪个表:

SELECT 'PatientTable' source_table, Username, Password 
FROM PatientTable 
WHERE Username = '{}'
UNION ALL SELECT 'DoctorTable' , Username, Password 
FROM DoctorTable 
WHERE Username = '{}'
UNION ALL SELECT 'ManagerTable', Username, Password 
FROM ManagerTable 
WHERE Username = '{}'

【讨论】:

    猜你喜欢
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 2017-08-02
    • 2014-11-07
    • 2014-10-17
    相关资源
    最近更新 更多