Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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 sqlite与第1列不同,第1列和第2列满足多种需求_Android_Sqlite_Android Sqlite - Fatal编程技术网

Android sqlite与第1列不同,第1列和第2列满足多种需求

Android sqlite与第1列不同,第1列和第2列满足多种需求,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我不完全确定这在select语句中有多可能,或者我是否最好在Android Studio中获取所有结果并进行检查 我有3个表,一个存储录音的表,一个存储标签的表和一个将标签链接到录音的表-TagsLink TagsLink表有两列,一列存储TagsID,另一列存储RecordingId 我希望只返回满足所选标记条件的RecordingSID。因此,如果选择TagsID 3,则返回录制1、2和4。如果选择了TagsID 3和4,则只返回录制2和录制4 在我看来,这大致是这样的: SELECT DI

我不完全确定这在select语句中有多可能,或者我是否最好在Android Studio中获取所有结果并进行检查

我有3个表,一个存储录音的表,一个存储标签的表和一个将标签链接到录音的表-TagsLink

TagsLink表有两列,一列存储TagsID,另一列存储RecordingId

我希望只返回满足所选标记条件的RecordingSID。因此,如果选择TagsID 3,则返回录制1、2和4。如果选择了TagsID 3和4,则只返回录制2和录制4

在我看来,这大致是这样的:

SELECT DISTINCT RecordingsID FROM TagsLink WHERE ... 

如果这不是完全可能的,任何关于实现这一点的其他方法的建议(即使需要重组数据库)都将不胜感激

这应该有效:

从tagslink中选择RecordingsID,其中TagsID=4
横断
从tagslink中选择RecordingsID,其中TagsID=3
我无法用sqlite测试它。但是,要使用的函数是Intersect,而不是使用sqlite不支持的括号

从tagslink中选择RecordingsID,其中TagsID=4
横断
从tagslink中选择RecordingsID,其中TagsID=3

我无法用sqlite测试它。但是,要使用的函数是Intersect,而不是使用sqlite不支持的括号进行此类查询:

SELECT
RecordingsID
FROM
TagsLink
WHERE
TagsID IN (3, 4, ...)
GROUP BY
RecordingsID
HAVING COUNT(*) = 2 -- This number must match the number of tag IDs specified in the IN (...) list.
关键是要记住根据要筛选的标记调整计数

其他类似且有用的答案和

编辑

要容纳其他表格,在不同列上进行筛选,请按如下方式使用
INTERSECT

SELECT
RecordingsID
FROM
TagsLink
WHERE
TagsID IN (3, 4, ...)
GROUP BY
RecordingsID
HAVING COUNT(*) = 2 -- This number must match the number of tag IDs specified in the IN (...) list.

INTERSECT

SELECT
RecordingsID
FROM
ContactsLink
WHERE
ContactsID IN (100, ...)
GROUP BY
RecordingsID
HAVING COUNT(*) = 1 -- This number must match the number of contacts IDs specified in the IN (...) list.

对于此类查询:

SELECT
RecordingsID
FROM
TagsLink
WHERE
TagsID IN (3, 4, ...)
GROUP BY
RecordingsID
HAVING COUNT(*) = 2 -- This number must match the number of tag IDs specified in the IN (...) list.
关键是要记住根据要筛选的标记调整计数

其他类似且有用的答案和

编辑

要容纳其他表格,在不同列上进行筛选,请按如下方式使用
INTERSECT

SELECT
RecordingsID
FROM
TagsLink
WHERE
TagsID IN (3, 4, ...)
GROUP BY
RecordingsID
HAVING COUNT(*) = 2 -- This number must match the number of tag IDs specified in the IN (...) list.

INTERSECT

SELECT
RecordingsID
FROM
ContactsLink
WHERE
ContactsID IN (100, ...)
GROUP BY
RecordingsID
HAVING COUNT(*) = 1 -- This number must match the number of contacts IDs specified in the IN (...) list.

你能提供一个提琴手吗?我想你可能会在这里得到你的答案。你能提供一个提琴手吗?我想你可能会在这里得到你的答案。非常感谢你,你是一个传奇人物!!!谢谢你的其他链接,我试着寻找,但我的结果没有带来太多回来@保尔斯特林格:很高兴!如果它对你有用,一定要接受它作为正确答案:)我一直在绞尽脑汁,想知道我该如何处理多张桌子,难道你不知道我会怎么做吗?基本上,你可以将联系人和标签链接到录音,所以我也有了标签链接表和联系人链接表。所以,如果我选择了2个标签和1个联系人,我希望所有的录音Id都有标签和联系人?!我最好只是将两个表连接到一个带有引用列的链接表中?非常感谢,你是一个传奇人物!!!谢谢你的其他链接,我试着寻找,但我的结果没有带来太多回来@保尔斯特林格:很高兴!如果它对你有用,一定要接受它作为正确答案:)我一直在绞尽脑汁,想知道我该如何处理多张桌子,难道你不知道我会怎么做吗?基本上,你可以将联系人和标签链接到录音,所以我也有了标签链接表和联系人链接表。所以,如果我选择了2个标签和1个联系人,我希望所有的录音Id都有标签和联系人?!我最好只是将两个表连接到一个带有引用列的链接表中?感谢这一点,允许我跨多个表工作,这正是我需要做的。感谢这一点,允许我跨多个表工作,这正是我需要做的