Jestem w obliczu tego problemu sqlite w którym staram się wydobyć kontakty, które mają numer telefonu/sz następującym zapytaniem:SQLite android kontakty wyekstrahować numer telefonu
Cursor cursor = context.getContentResolver().
query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[]{
ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.PHOTO_URI
},
ContactsContract.Contacts.HAS_PHONE_NUMBER + ">?",
new String [] {"0"},
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC"
);
Problem polega na tym, że w zdarza się, że kontakt ma więcej niż 1 numer telefonu wynik będzie w tej postaci:
id: 451, name: Maria, photoUri: null, has_phone_number: 1, phone_number: 0700 000 000
id: 451, name: Maria, photoUri: null, has_phone_number: 1, phone_number: 0800 000 000
id: 451, name: Maria, photoUri: null, has_phone_number: 1, phone_number: 0900 000 000
co jest niepożądane ze względu na duplikatów danych.
chcę zrobić tylko 1 zapytanie do db z nadzieją, że może być napisane, aby powrócić wynik tak:
id: 451, name: Maria, photoUri: null, has_phone_number: 1, phone_number: 0700 000 000, 0800 000 000, 0900 000 000
jest to możliwe?
Dziękuję.
Nie sądzę, że jest to możliwe, jak konfiguruje się Android db. czy nie można umieścić go na liście i łączyć ręcznie za pomocą pętli lub czegoś podobnego? Wiem, że to nie jest dobry sposób, ale nie mogę myśleć o lepszym. –
Musi pracować z kontaktami w zakresie tysięcy, chciałbym uniknąć dodatkowego przetwarzania. –
Nie znam Androida, ale nie jest to zbyt trudne w SQL. Czy możesz jednak uruchamiać surowe zapytania SQL w bazie danych lub czy korzystanie z tej funkcji jest ograniczone? –