【发布时间】:2017-02-18 14:58:02
【问题描述】:
我想从 3 个表的 SQLite 数据库中获取记录。
表格结构
1. tb_contacts 表
它包含联系信息,如 id、姓名和电子邮件。
contact_id | contact_name | contact_email
---------- | ------------ | ------------------
1 | Deepak | deepak@yopmail.com
---------- | ------------ | ------------------
2 | Shivam | shivam@yopmail.com
2。 tb_numbers 表
它包含每个联系人的电话号码
id | contact_id | contact_phone
---| ---------- | ------------
1 | 1 | 123456789
---| ---------- | ------------
2 | 1 | 789456123
---| ---------- | ------------
3 | 2 | 456123654
---| ---------- | ------------
4 | 2 | 698521473
3。 tb_deleted 表状态
此表包含联系人的状态,无论是否删除,都带有 user_id。如果该表包含特定user_id的联系人行,则表示该联系人已为该用户删除,否则不删除。
id | contact_id | user_id
---| ---------- | --------
1 | 1 | 22201
---| ---------- | --------
2 | 1 | 22202
---| ---------- | --------
3 | 2 | 22201
我想要什么
1. 假设用户的 user_id 22201。它会得到所有的联系人,比如
contact_id | contact_name | contact_email | contact_phone | deleted
---------- | ------------ | ------------------ | ------------- | -------
1 | Deepak | deepak@yopmail.com | 123456789 | 1
---------- | ------------ | ------------------ | ------------- | -------
1 | Deepak | deepak@yopmail.com | 789456123 | 1
---------- | ------------ | ------------------ | ------------- | -------
2 | Shivam | shivam@yopmail.com | 456123654 | 1
---------- | ------------ | ------------------ | ------------- | -------
2 | Shivam | shivam@yopmail.com | 698521473 | 1
2。现在是 user_id 22202 的用户。
contact_id | contact_name | contact_email | contact_phone | deleted
---------- | ------------ | ------------------ | ------------- | -------
1 | Deepak | deepak@yopmail.com | 123456789 | 1
---------- | ------------ | ------------------ | ------------- | -------
1 | Deepak | deepak@yopmail.com | 789456123 | 1
---------- | ------------ | ------------------ | ------------- | -------
2 | Shivam | shivam@yopmail.com | 456123654 | 0
---------- | ------------ | ------------------ | ------------- | -------
2 | Shivam | shivam@yopmail.com | 698521473 | 0
我的尝试
SELECT tb_contacts.contact_id, tb_contacts.contact_name, tb_contacts.contact_email, tb_numbers.contact_phone from tb_contacts join tb_numbers on tb_contacts.contact_id = tb_numbers.contact_id left join tb_deleted on tb_contacts.contact_id = tb_deleted.contact_id;
它为我提供了每个联系人的记录,其中包含已删除状态但没有 user_id。我怎样才能获得具有 user_id 条件的所需数据。我使用了WHERE 子句,但有了这个,它只提供那些在tb_deleted 表中有条目的联系人的记录。
什么是最好的方法或解决方案,以便我可以获得所需的数据。
谢谢。
【问题讨论】: