【发布时间】:2018-09-30 13:03:26
【问题描述】:
我有两个名为 RECEIPT 和 PARTICULAR 的对象。
RECEIPT 对象的属性是:
receiptNo
特定列表
特定对象的属性是:
- 特定 ID
- 特定名称
我也有他们各自的表格。 receiptNo 是 RECEIPT 表的主键,是 PARTICULAR 表的外键。所以收据有多个细节。
我想获取数据以填充 RECEIPT 对象。为了实现这一点,我可以首先对 RECEIPT 表运行选择查询,然后通过使用 for 循环迭代结果,我可以运行另一个查询来获取 PARTICULAR 表。在这里,我两次调用数据库。
为了避免调用 DB 两次,我也尝试加入:
SELECT * FROM RECEIPT r,PARTICULAR p WHERE r.RECEIPT_NO = p.RECEIPT_NO
但是,由于它返回 RECEIPT 的重复数据,即对于每个特定的行,相应的 RECEIPT 数据也正在被匹配。这个 RECEIPT 数据是重复的,因为多个 specificId 共享相同的receiptNo。因此,我无法将数据正确加载到 RECEIPT 对象(或者我可能不知道如何将此类结果集加载到相应的对象)
我的实际要求是通过为每个收据形成特定列表来加载 RECEIPT 对象。
使用 for 循环和两次调用 DB 是实现它的唯一方法吗? 建议我一种有效的方法来实现这一目标
【问题讨论】:
-
什么是“从两个表中获取数据并分配给 RECEIPT 对象”?你需要准确地解释你想要什么输出,以及为什么你尝试的东西不起作用;你得到的和你想要的有什么不同?
-
@DanielRoseman 我已经更新了这个问题。我的要求只是通过从数据库中获取数据来填充 Receipt 对象。但我想知道有效的方法
-
您为什么要尝试将相关表中的数据(即,子信息添加到父表中)?这会复制不必要的数据。关系模型(SQLite 等关系数据库的基础)的重点之一是避免数据存储的冗余。
-
@Parfait 你能分享你的方法吗?对我来说,子对象列表是父对象的字段之一。如果您有更好的数据库模型,请分享
标签: python python-3.x sqlite