我正在尝试从多个表配置中提取数据.
如果这个解释含糊不清,我很抱歉,但如果不对我的程序的整个内部工作进行冗长的解释,这是我能做的最好的事情.
我在一个应用程序中有2个模块.
第一单元显示与一组项目相关的信息.
它会删除所有项目中不存在的信息. (最低公分母)
所以…
第一项是红色和绿色.
第二项是绿色和蓝色.
第三项只是绿色.
因此,表一是项目列表,表格二是颜色列表.
当然,第三张表格保存了关系.
我试图让模块只显示表2中的所有项目中的元素.
在这种情况下,它会将显示的元素剥离为绿色,因为这是唯一的常见元素.
我尝试以编程方式执行此操作,这是查看和调试的噩梦.那将是一个移动应用程序,所以所有的for循环将真正落后于我的程序.我知道必须有一种方法可以用SQL做到这一点,但经过几个小时的研究,我仍然无法理解如何.
谢谢.
为清晰起见更新:
好的,我在我的问题上犯了2个错误.
首先,我不是在寻找常见的数量,我正在寻找共同的价值.
所以我只想要在所有三个项目中都存在颜色并丢弃其余的颜色.
其次,我应该更加具体.我正在为Android手机开发应用程序,所以我使用的是Java和SQLite.
这是我到目前为止的原始形式,而不是我使用的颜色示例.
在这个代码标签将等于颜色和其他将等于项目…
SELECT DISTINCT tag.name
来自other_tag_relationship AS otr
JOIN标签ON otr.tag_id = tag._id
在(2,3,4)中的otr.other_id;
这显然会返回所有给定其他标记的所有标记的明确列表.
我现在要做的是仅显示所有其他标签中可用的标签并丢弃其余标签.比如删除2中不属于3和4的任何标签.此外,列表(2,3,4)将在运行时动态生成.
再次感谢.
最佳答案 根据您的描述,您可能希望通过中间表3(ItemColors)获得与所有项目(表1)相关联的颜色列表(表2):
Select IC.ColorId, C.Name
From ItemColors As IC
Join Colors As C
On C.Id = IC.ColorId
Group By IC.ColorId, C.Name
Having Count(*) = (
Select Count(*)
From Items As I2
)