python - (Python 3.x 和 SQL)检查多个表中是否存在条目并转换为二进制值
问题描述
我有一个“主表”,其中只包含我所有其他表中的一列 id。我还有其他几个表,其中包含一些 id 以及其他数据列。我正在尝试遍历每个较小表的所有 id,为较小的表创建一个新列,检查该表上是否存在该 id 并在主表中创建一个二进制条目。(如果 id 不存在则为 0,如果指定表上存在 id 则为 1)
这似乎很令人困惑,但它的应用是检查用户是否存在于特定日期的桌子上,并每天跟踪此信息。
现在,我正在遍历日期,并且在每次迭代中,我都在遍历所有 id 以检查它们在该日期是否存在。这可能会非常缓慢,但可能有更好的方法来做到这一点。我的代码如下所示:
def main():
dates = init()
id_list = getids()
print(dates)
for date in reversed(dates):
cursor.execute("ALTER TABLE " + table + " ADD " + date + " BIT;")
cnx.commit()
for ID in id_list:
(...)
我知道下一步将使用每个 id 生成一个查询,如下所示:
SELECT id FROM [date]_table
WHERE EXISTS (SELECT 1 FROM master_table WHERE master_table.id = [date]_table.id)
我已经被这个问题困扰了几天,到目前为止,我无法提出一个可以提供有用结果的查询。
.
例如,如果我三天有三张桌子......
周一:
+------+-----+
| id | ... |
+------+-----+
| 1001 | ... |
| 1002 | ... |
| 1003 | ... |
| 1004 | ... |
| 1005 | ... |
+------+-----+
周二:
+------+-----+
| id | ... |
+------+-----+
| 1001 | ... |
| 1003 | ... |
| 1005 | ... |
+------+-----+
周三:
+------+-----+
| id | ... |
+------+-----+
| 1002 | ... |
| 1004 | ... |
+------+-----+
我想最终得到一个这样的主表:
+------+--------+---------+-----------+
| id | monday | tuesday | wednesday |
+------+--------+---------+-----------+
| 1001 | 1 | 1 | 0 |
| 1002 | 1 | 0 | 1 |
| 1003 | 1 | 1 | 0 |
| 1004 | 1 | 0 | 1 |
| 1005 | 1 | 1 | 0 |
+------+--------+---------+-----------+
提前感谢您对此问题的任何帮助。由于这是一个令人困惑的问题,如果我可以提供任何其他详细信息,请告诉我。
解决方案
推荐阅读
- c# - 如何从.net动态数组对象中获取属性值
- applescript - 如何获取应用程序的属性
- java - 使用 @EmbeddedId 请求休眠不工作(Spring boot - 2.3.1.RELEASE)
- r - 使用 rhandsontable 转置与计数
- r - 在 R 中创建一个数据框,其中总结了所有独特的模式和它们存在的类
- reactjs - 如何使用 Top Navigator 和 Bottom Navigator 而不让 Top Navigator 与 React Navigation 中的状态栏重叠?
- php - 使用通配符将未知数量的关键字绑定到 SQL 语句
- python - 如何使用 Python 在 for 循环中将 json 对象写入和读取到谷歌云中的文件
- primefaces - 如何在过滤后更新和显示 p:dataTable 中的记录数?
- excel - 工作表声明出错