使用引用Id表

时间:2017-01-12 22:29:15

标签: android sqlite

我需要一些SQLite问题的帮助,在我的应用程序中,用户可以添加一些待办事项并将此todos与联系人连接,但联系人有多个连接用于多个待办事项。我的问题是,如果我想要特定待办事项的所有联系人,我必须查看我的查询?

托多斯

todoId  todoTitle 
0        do some
1        do some

联系人

contactId contactName
299             Stan
231             Jeff

ReferenceIds

 contactId  todoId
  299         0
  299         1
  231         0

2 个答案:

答案 0 :(得分:1)

首先,如果你想要一对多关系,你不需要关系表。多对多是必要的。如果1个联系人有很多待办事项并且每个待办事项都有一个联系人 - 只需将contactId添加到todos表。在这种情况下,您只需通过contactId

选择Todos

在您的情况下,您应该进行查询联接

select distinct c.* 
from Contacts as c
inner join ReferenceIds as r on c.contactId = r.contactId
where todoId = ?

答案 1 :(得分:1)

假设您有这么多对多的关系,您可以使用类似这样的查询获取指定待办事项ID的所有联系人:

SELECT contactId, contactName
FROM contacts
JOIN referenceIds ON referenceIds.contactId = contacts.contactId
WHERE todoId = ID

请注意,上述查询未选择todos表中的任何列。如果您还需要该表中的列,则需要第二个连接,如下所示:

SELECT contactId, contactName, todoTitle
FROM contacts
JOIN referenceIds ON referenceIds.contactId = contacts.contactId
JOIN todos ON todos.todoId = referenceIds.todoId
WHERE todoId = ID