Android 用于显示代码/键值的对话框的SQL选择
我对SQL没什么意见,但这一点让我感到困惑。我打算就此放弃,但我想我会发布这个问题,因为其他开发人员可能会发现自己也在寻找同样的方法 我正在开发一个android multiselect AlertDialog。该对话框将用于从键/代码表中选择值。为了实现这一点,我需要一个查询,返回一个结果集,该结果集包含所有键/代码id和值,另一列带有布尔值(或+1和-1),指示给定的人是否具有该标题。下面是我需要的结果集(使用SQLite 3): 给定person.id=1Android 用于显示代码/键值的对话框的SQL选择,android,sql,sqlite,android-alertdialog,Android,Sql,Sqlite,Android Alertdialog,我对SQL没什么意见,但这一点让我感到困惑。我打算就此放弃,但我想我会发布这个问题,因为其他开发人员可能会发现自己也在寻找同样的方法 我正在开发一个android multiselect AlertDialog。该对话框将用于从键/代码表中选择值。为了实现这一点,我需要一个查询,返回一个结果集,该结果集包含所有键/代码id和值,另一列带有布尔值(或+1和-1),指示给定的人是否具有该标题。下面是我需要的结果集(使用SQLite 3): 给定person.id=1 TITLE.ID TITL
TITLE.ID TITLE.TITLE PERSON_HAS_TITLE
1 Parent true OR +1
2 Teacher true OR +1
3 Fireman false OR -1
4 Policeman false OR -1
**PERSON**
ID NAME
1 Sue
2 Scott
3 Jim
**TITLE**
ID TITLE
1 Parent
2 Teacher
3 Fireman
4 Policeman
**PERSON_TITLE**
PERSON_ID TITLE_ID
1 1
1 2
2 4
有什么想法吗?这样就可以了:
SELECT title.id,
title.title,
( CASE
WHEN EXISTS(SELECT person_id
FROM person_title
WHERE person_id = 1
AND title_id = title.id) THEN 1
ELSE -1
END ) as person_has_title
FROM title
或者,这也将起作用:
SELECT title.id,
MAX(title.title) as title,
MAX(CASE
WHEN person_id IS NULL THEN -1
ELSE 1
END) as person_has_title
FROM title
LEFT JOIN person_title
ON ( title.id = person_title.title_id and person_title.person_id = 1)
GROUP BY title.id
哇,太棒了…谢谢…第二个很好用,第一个对所有行都返回+1…我永远也想不到这一点…再次感谢。第一个查询出错,现在应该也可以用了。