の代わりにORを使って結合クエリを作成しました。GreenDao v2.1.0でSQLite DBを生成しました。 Here is its diagram (a tiny piece of it)GreenDaoで、AND
連絡先には電話番号が多数ある場合があります。 検索クエリを作成したい:GIVEN_NAMEまたはFAMILY_NAMEまたはPHONE.NUMBERに特定の単語が含まれているすべての連絡先をリストする。
たとえば、with these entriesと言います。「bob」という言葉を使用した場合は、連絡スポンジボブが返されます。 「222」という言葉を使用すると、Patrick Starの連絡先が返されます。
二つのテーブルがクエリに含まれている、ので、私は、コードのこの部分との結合溶液に頼っ:
SELECT T."_id", T."GIVEN_NAME", T."FAMILY_NAME"
FROM "CONTACT" T
JOIN PHONE J1
ON T."_id"=J1."CONTACT_ID"
WHERE (T."GIVEN_NAME" LIKE ? OR T."FAMILY_NAME" LIKE ?) AND J1."NUMBER" LIKE ?
COLLATE LOCALIZED ASC
5行目ポイント:
QueryBuilder<Contact> qb = getContactDao(context).queryBuilder();
qb.whereOr(ContactDao.Properties.Given_name.like("%" + word + "%"),
ContactDao.Properties.Family_name.like("%" + word + "%"));
qb.join(Phone.class, PhoneDao.Properties.Contact_id)
.where(PhoneDao.Properties.Number.like("%" + word + "%"));
List<Contact> contacts = qb.list();
これは、以下のSQLを生成問題を解決する: "AND"コネクタ。私は必然的にそれを "OR"に置き換えようとしています。
何か不足していますか?私はJOINソリューションを離れるべきですか? ありがとう:)