【发布时间】:2012-11-16 08:14:27
【问题描述】:
我有 2 张桌子。一个表包含一个人的姓名和该人的唯一 ID。另一张表有多个列,但有一列特别存储了此人的唯一 ID。
到现在为止,第二个表始终存储一个 ID,因此我能够轻松地对这两个表执行 JOIN 并获得我需要的数据,如下所示:
SELECT DISTINCT personTable._id, personTable.name FROM dataTable LEFT OUTER JOIN personTable ON dataTable.person_id = personTable._id
但是,一项新要求开始发挥作用,现在将允许第二个表在同一列中引用多个 ID。换句话说,表格过去严格来说是这样的:
2ND TABLE COLUMN PERSON'S ID = 5
但是现在存储可以这样
2ND TABLE COLUMN PERSON'S ID = 5-6
2ND TABLE COLUMN PERSON'S ID = 5-3-8-2
2ND TABLE COLUMN PERSON'S ID = 5 (still valid)
使用这种新格式,我每次都无法成功查询数据。如何更新此查询以正常工作?我在 Android 中使用 SQLite。感谢您的帮助。
【问题讨论】:
-
当他们弄乱你的桌子完整性时,你为什么不反对? ;) 是否有任何表只携带人员数据? (例如Person父表)按照新的结构,你的dataTable的person ID应该也更新了吧?
-
相信我,我不喜欢这些变化! PERSON 表仅由人员数据组成。 dataTable 的人员 ID 不会更改,它只是将其数据扩展。创建 dataTable 时,dataTable 的人员 ID 列设置为 TEXT。因此,当添加新行时,新要求不是只添加单个人员 ID,而是表示 dataTable 可以有多个与行关联的 PERSON,因此他们只想在两者之间添加一个破折号(即“-”)每个人的 ID。