我需要表格:
Table A
id | title
1 | toto
2 | tata
3 | titi
Table B
id | title_id | tag_id
1 | 1 | 6
2 | 1 | 16
3 | 1 | 26
4 | 2 | 6
5 | 2 | 7
6 | 2 | 16
7 | 3 | 2
8 | 3 | 1
9 | 3 | 16
(对不起表格显示对不起)
在我的应用程序中,我有一个带复选框的标签列表视图,当用户点击一个复选框时,我想用点击的复选框过滤标题: (例如:如果用户点击标签16,我应该显示标题1,2和3.但是如果用户点击标识为id 26并标记为id 16,那么我应该只有标题为id 1)
我想到了一个类似的查询:
SELECT DISTINCT A.title,A.id 从A INNER JOIN B ON B.title_id = A.id WHERE B.tag_id = 26 AND B.tag_id = 16;
但显然查询的最后一部分(同一列上的两个AND子句)是错误的,我找不到会给我这个结果的查询。
我试过了:
SELECT DISTINCT A.title,A.id 从A INNER JOIN B ON B.title_id = A.id 在哪里B.tag_id IN('26','16');
但是IN子句就像一个OR子句,结果,我得到值26的所有行加上值16的所有行(标题1,2和3)而不是标题1。 我绝对需要用和SQL查询来做这个,因为我正在使用SimpleCursorAdapter来检索数据并填充其他列表视图。
我搜索了一会儿,但我没有找到任何相关的解决方案。 (或者我输入错误的单词......)
请问有解决方案吗?
PS:我希望我已经清楚了。抱歉我的英语不好。答案 0 :(得分:1)
使用子查询:
SELECT DISTINCT A.title, A.id FROM A WHERE
A.id IN (SELECT DISTINCT B.title_id FROM B WHERE B.tag_id='16')
AND A.id IN (SELECT DISTINCT B.title_id FROM B WHERE B.tag_id='26')