我需要一些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
答案 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