首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Access >

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

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

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

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

我将数据库设计成如下结构

SQL code
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)

============
附,我错误的写法:
SQL code
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='重量' ,则返回空

[解决办法]
SQL code
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 

热点排行