具有可变数目的Attribute的Item集合,怎么检索含有指定几个Attribute的Item
具有可变数目的Attribute的Item集合,如何检索含有指定几个Attribute的Item
具有可变数目的Attribute的Item集合,如何检索含有指定几个Attribute的Item
假如有若干产品
电视机 尺寸28,重量20,价格1000
冰箱 长40,宽80,高150,颜色Red
洗衣机 容积50
我将数据库设计成如下结构
如何检索出拥有“长”和“重量”的物品??(最好用J-Sql)
============
附,我错误的写法:
WHERE tblItermAttribute.strName IN ('长','重量')
结果是检索出拥有“长”或“重量”的物品,而不是有“长”和“重量”的物品
若改成WHERE tblItermAttribute.strName='长' AND tblItermAttribute.strName='重量' ,则返回空
------解决方案--------------------
具有可变数目的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