问一个有点难度的SQL查询

whillamgaster 2006-11-27 04:51:40
三张表
//袖子
CREATE TABLE T1(
C11 NUMBER,PRIMARY KEY
C12 VARCHAR2(50)
)
//棉袄
CREATE TABLE T2(
C21 NUMBER,PRIMARY KEY
C22 VARCHAR2(50)
)
//袖子和棉袄的关联表
CREATE TABLE T3(
C31 NUMBER PRIMARY KEY,
C32 NUMBER,
C33 NUMBER
)
T3.C32 引用T1.C1
T3.C33 引用T2.C1

要求:
查询与T3关联两端的T1的内容,在一列上面显示出来
类似:

棉袄a 袖子a 袖子b
棉袄b 袖子1 (没袖子)
。。。。。
...全文
310 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangzk0206 2006-11-28
  • 打赏
  • 举报
回复
SELECT T1.C12,T2.C22 FROM T2,T3,T1 WHERE T1.C11=T3.C32 AND T2.C21=T3.C33
用这个查出来你看看
你就明白你的这个是典型的行转列的问题了

网上搜一下就OK了
山林73 2006-11-28
  • 打赏
  • 举报
回复
select c32,max(decode(r,1,c33)) c33a,max(decode(r,2,c33) c33b
from(
select c32,c33, row_number()over(partition by c32) r from t3
)a
group by c32;

select c32,min(c33) c33a, nullif(max(c33),min(c33)) c33b
from t3
group by c32;

select t2.c22, t1a.c12 c12a, t1b.c12 c12b
from (
select c32,min(c33) c33a, nullif(max(c33),min(c33)) c33b
from t3
group by c32;
)a
inner join t2 on t2.c21 = a.c32
left join t1 t1a on t1a.c11 = a.c33a
left join t1 t1b on t1b.c11 = a.c33b
;
doer_ljy 2006-11-28
  • 打赏
  • 举报
回复
楼上说得没错,属于表转置问题。
其实本来很简单的,我觉得问题出在你的关联关系表。
搞笑了,既然是关联表就应该以t1和t2的逐渐作联合主键。
为什么自己单独来了一个主键呢?
不理解!
whillamgaster 2006-11-27
  • 打赏
  • 举报
回复
看来今天是没有人来解决这个问题了,
顶一下,等明天
whillamgaster 2006-11-27
  • 打赏
  • 举报
回复
无语,继续
jf1840 2006-11-27
  • 打赏
  • 举报
回复
select (select c12 from t1 where t1.c11=t3.c32) as 袖子,
(select c22 from t2 where t2.c21=t3.c33) as 棉袄,c31
from t3;
whillamgaster 2006-11-27
  • 打赏
  • 举报
回复
倒,楼上的两个袖子重了,实质上还是一个袖子而已
继续
Eric_1999 2006-11-27
  • 打赏
  • 举报
回复
select
nvl(T2.C22,'没棉袄),
nvl(T1.C12,'没袖子'),
nvl(T1.C12,'没袖子')
from T3,T2,T1 where T3.C32=T1.C1(+) and T3.C33=T2.C1(+)
whillamgaster 2006-11-27
  • 打赏
  • 举报
回复
这样查询出来的结果不对
一行里面只有一只袖子,这怎么行呢,我要的结果是棉袄和两只袖子都在一行里面返回

铜子们继续啊
lilitu 2006-11-27
  • 打赏
  • 举报
回复
select
nvl(T2.C22,'没棉袄),
nvl(T1.C12,'没袖子')
from T3,T2,T1 where T3.C32=T1.C1(+) and T3.C33=T2.C1(+)

17,078

社区成员

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

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