Ich möchte die Datensätze aus SQLite-Datenbank von 3 Tabellen abrufen.SQLite Android JOIN Abfrage
Tabellen Struktur
1. tb_contacts Tabelle
Es die Kontaktinformationen enthält wie ID, Name und E-Mail.
contact_id | contact_name | contact_email
---------- | ------------ | ------------------
1 | Deepak | [email protected]
---------- | ------------ | ------------------
2 | Shivam | [email protected]
2. tb_numbers Tabelle
Es die Telefonnummer jeden Kontakt enthält
id | contact_id | contact_phone
---| ---------- | ------------
1 | 1 | 123456789
---| ---------- | ------------
2 | 1 | 789456123
---| ---------- | ------------
3 | 2 | 456123654
---| ---------- | ------------
4 | 2 | 698521473
3. tb_deleted Tabellenstatus
diese Tabelle conatins den Status des Kontakts, ob sie gelöscht wird oder nicht mit User_id . Wenn diese Tabelle die Kontaktzeile mit einer bestimmten Benutzer-ID enthält, bedeutet dies, dass der Kontakt für diesen Benutzer gelöscht wurde, andernfalls nicht.
id | contact_id | user_id
---| ---------- | --------
1 | 1 | 22201
---| ---------- | --------
2 | 1 | 22202
---| ---------- | --------
3 | 2 | 22201
Was ich
1. Angenommen, Benutzer möchten mit User_id . Es wird erhalten alle Kontakte wie
contact_id | contact_name | contact_email | contact_phone | deleted
---------- | ------------ | ------------------ | ------------- | -------
1 | Deepak | [email protected] | 123456789 | 1
---------- | ------------ | ------------------ | ------------- | -------
1 | Deepak | [email protected] | 789456123 | 1
---------- | ------------ | ------------------ | ------------- | -------
2 | Shivam | [email protected] | 456123654 | 1
---------- | ------------ | ------------------ | ------------- | -------
2 | Shivam | [email protected] | 698521473 | 1
2. Jetzt Benutzer mit User_id .
contact_id | contact_name | contact_email | contact_phone | deleted
---------- | ------------ | ------------------ | ------------- | -------
1 | Deepak | [email protected] | 123456789 | 1
---------- | ------------ | ------------------ | ------------- | -------
1 | Deepak | [email protected] | 789456123 | 1
---------- | ------------ | ------------------ | ------------- | -------
2 | Shivam | [email protected] | 456123654 | 0
---------- | ------------ | ------------------ | ------------- | -------
2 | Shivam | [email protected] | 698521473 | 0
Was ich
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;
versucht haben, es ist mir die Aufzeichnungen von jedem Kontakt mit gelöschten Status bereitstellt, aber ohne User_id. Wie bekomme ich die benötigten Daten mit der Bedingung user_id? Ich habe WHERE
Klausel verwendet, aber damit nur die Datensätze der Kontakte, für die es einen Eintrag in tb_deleted
Tabelle gibt.
Was ist der beste Weg oder Lösung, damit ich die erforderlichen Daten erhalten kann.
Danke.
Hallo CL., Es funktioniert perfekt.Gibt es eine Möglichkeit, die Liste der Kontakte zu erhalten, die eine Zeile jedes Kontakts mit mehreren Telefonnummern haben, und nicht eine Zeile jedes Kontakts mit einer Telefonnummer? –
Mit Gruppierung und [group_concat()] (http://www.sqlite.org/lang_aggfunc.html#groupconcat), aber das wäre eine andere Frage. –
Danke. Mit group_concat() kann ich das gewünschte Ergebnis erhalten. –