具有可变数目的Attribute的Item集合,如何检索含有指定几个Attribute的Item

smartcatiboy 2010-04-16 09:19:18
具有可变数目的Attribute的Item集合,如何检索含有指定几个Attribute的Item

假如有若干产品
电视机 尺寸28,重量20,价格1000
冰箱 长40,宽80,高150,颜色Red
洗衣机 容积50

我将数据库设计成如下结构
CREATE TABLE tblItem(lngId COUNTER PK, strName TEXT(10) UNIQUE)
CREATE TABLE tblAttribute(lngId COUNTER PK,strName TEXT(10) UNIQUE)
CREATE TABLE tblItemAttribute(lngIid INTEGER , lngAid Integer)


如何检索出拥有“长”和“重量”的物品??(最好用J-Sql)

============
附,我错误的写法:
SELECT tblItem.strName FROM 
((tblItem LEFT JOIN tblItemAttribute ON tblItem.lngId=tblItemAttribute.lngIid)
LEFT JOIN tblAttribute ON tblItermAttribute.lngAid=tblAttribute.lngId)

WHERE tblItermAttribute.strName IN ('长','重量')
结果是检索出拥有“长”或“重量”的物品,而不是有“长”和“重量”的物品
若改成WHERE tblItermAttribute.strName='长' AND tblItermAttribute.strName='重量' ,则返回空
...全文
42 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
smartcatiboy 2010-04-16
  • 打赏
  • 举报
回复
感谢回复

可惜太复杂了,不便于拼接和效率

我去找找别的办法,不行就只有倒排表了
ACMAIN_CHM 2010-04-16
  • 打赏
  • 举报
回复
select c.*
from ((tblItemAttribute a1 inner join tblAttribute b1 on a1.lngAid=b1.lngId and b1.strName='长')
inner join (tblItemAttribute a2 inner join tblAttribute b2 on a2.lngAid=b2.lngId and b2.strName='重量')
on a1.lngIid=a2.lngIid)
inner join tblItem c on a1.lngIid= c.lngId

7,713

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧