如何查询

tianke3477 2005-10-20 03:00:43
现在有两个表,表一是物品的属性表,表二是物品表

属性表 物品表

属性a 物品1
属性b 物品2
属性c 物品3
属性d 物品4
属性e 物品5

物品拥有的属性不是固定的(例如:物品1拥有属性a,c 物品2拥有属性c,d)

请问如何在物品表中查询出同时拥有属性c和属性e的物品

要实现相应的查询功能,数据库有好的设计方法吗?


...全文
95 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianke3477 2005-10-20
  • 打赏
  • 举报
回复
决定用三个表了,物品的属性很少,物品的数量会很大
waterfirer 2005-10-20
  • 打赏
  • 举报
回复
如果你建两个表,物品表的里的属性字段需要把属性id拼起来再存,取的时候再拆开。
一楼那样建三个表,挺好
一个物品的属性最多有多少?有多少物品?数据量会多大?
tianke3477 2005-10-20
  • 打赏
  • 举报
回复
目的:在物品表里查出含有属性c和属性e的物品编号


在属性表里有“属性ID,属性名“ 两个子段

在物品表里,每个物品可能含有a属性,也可能含有a,c两种属性或者更多属性,也就是说每个物品拥有任意个属性

如果只建这两个表,能实现这个查询吗?如果能实现,物品表里的属性字段应该怎么设计?

如果两个表不能实现,像1楼那样再建第三个表,查询语句的效率上有什么要注意的吗?
zzwind5 2005-10-20
  • 打赏
  • 举报
回复
或者 做 5个表连接

SQL> select distinct t1.g_name from goods t1, attr t2, relation t3, attr t4, relation t5
2 where t1.g_id=t3.g_id and t2.t_id=t3.t_id and t2.t_id='E' AND
3 t1.g_id=t5.g_id and t4.t_id=t5.t_id and t4.t_id ='C';

G_NAME
--------------------------------------------------
物品1
物品2
物品3
zzwind5 2005-10-20
  • 打赏
  • 举报
回复
select * from goods;

G_ID G_NAME
----- ------------------------------
1 物品1
2 物品2
3 物品3
4 物品4
5 物品5

SQL> select * from attr;

T_ID T_NAME
---------- ---------------
A 属性a
B 属性b
C 属性c
D 属性d
E 属性e

select * from relation;

G_ID T_ID
----- --------------------
1 E
1 C
2 E
2 C
3 E
3 C
3 A
4 E
5 C

SQL> select g_name from goods t1 where not exists (
2 select * from attr t2 where t_id in ('E', 'C') and not exists (
3 select * from relation t3 where t1.g_id=t3.g_id and t2.t_id=t3.t_id));

G_NAME
--------------------------------------------------
物品1
物品2
物品3

不知道是不是这个意思
超叔csdn 2005-10-20
  • 打赏
  • 举报
回复
select * from 物品表
where 物品表.属性=c and 物品表.属性=e
你最好说详细点,我是按自己的理解来的.
wfeng7907 2005-10-20
  • 打赏
  • 举报
回复
没有弄明白,楼主要做什么?
sasacat 2005-10-20
  • 打赏
  • 举报
回复
物品属性表

物品id 属性id
---------------

物品1id 属性aid
物品1id 属性bid
物品2id 属性aid
物品2id 属性cid

select 物品,属性 from 物品属性表 a,属性表 b, 物品表 c
where a.物品id=c.物品id
and a.属性id=b.属性id
and 属性=属性c
and 属性= 属性e


17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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