Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 用于显示代码/键值的对话框的SQL选择_Android_Sql_Sqlite_Android Alertdialog - Fatal编程技术网

Android 用于显示代码/键值的对话框的SQL选择

Android 用于显示代码/键值的对话框的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

我对SQL没什么意见,但这一点让我感到困惑。我打算就此放弃,但我想我会发布这个问题,因为其他开发人员可能会发现自己也在寻找同样的方法

我正在开发一个android multiselect AlertDialog。该对话框将用于从键/代码表中选择值。为了实现这一点,我需要一个查询,返回一个结果集,该结果集包含所有键/代码id和值,另一列带有布尔值(或+1和-1),指示给定的人是否具有该标题。下面是我需要的结果集(使用SQLite 3):

给定person.id=1

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…我永远也想不到这一点…再次感谢。第一个查询出错,现在应该也可以用了。