帮忙写个SQL--------面条 (100分)

  • 主题发起人 主题发起人 面条
  • 开始时间 开始时间

面条

Unregistered / Unconfirmed
GUEST, unregistred user!
table1: id,name
table2: id,x,y
table3: id,x,y

关系:table2.id=table1.id
table3.id=table1.id

结果集:
name , x ,y

 
select a.name,b.x,b,y
from table1 a,table2 b,table3 c
where a.id=b.id and a.id=c.id
???
 
还是
select a.name,b.x,c.x,b,y,c.y
from table1 a,table2 b,table3 c
where a.id=b.id and a.id=c.id
???
 
小寿星的回答差不多了.面条,你可以请小天吃长寿面了 :-)

不过面条的问题有一点没有交待清楚: table3的x,y和table2的x,y是什么关系?
 
SELECT table1.name,table2.x,table2.y FROM tabel1,table2,table3
WHERE table2.id=table1.id AND table3.id=table1.id
如果结果中的x,y为table3中的,用table3.x,table3.y代替
 
table2: id,x,y
table3: id,x,y
这两个x,y是什么关系?是不是要相加?
 
如果是要将table1,table2,table3中id相同并且table2,table3中x,y相同的选出
select a.name, b.x, c.y
from table1 a, table2 b, table3 c
where a.id=b.id and a.id=c.id and b.x=c.x and b.y=c.y
 
SELECT table1.name,table2.x+Table3.x,table2.y+Table3.y FROM tabel1,table2,table3
WHERE table2.id=table1.id AND table3.id=table1.id
 
1句不可能完成:-)
 
我的问题是:

x,y的值有的来自table2,有的table3
table2和table3的id 有可能相同,这样的话,需显示出两行记录
如:name(来自1) x(来自2) y(来自2)
name(来自1) x(来自3) y(来自3)
 
select a.name,b.x,c.x,b,y,c.y
from table1 a,table2 b,table3 c
where a.id=b.id or a.id=c.id
group by a.name,b.x,c.x,b,y,c.y

可就是放在一行里显示了
 
呜呜,我想把2.x和3.x放在同一列里。
 
那还有一个傻办法,把结果排到一个临时table里去,你想怎么分就可以怎么分
嘻嘻
 
create procedure listxy
as
select * from table2 into tmptable
insert into tmptable select * from table3
select table1.name,tmptable.x,tmptable.y from table1, tmptable
where table1.id=tmptable.id
drop table tmptable
 
select id,x,y
from table1,table2
where table1.id=table2.id
<b>union</b>
select id,x,y
from table1,table3
where table1.id=table2.id
 
silly 的答案比较好,但union 后还要加个 all 才行!
谢谢小天,你的方法我也会考虑的。再次祝你---生日快乐!
 
silly的答案应该行
 
谢谢面条~~~~~~~~~~~~~~~~~~~~~
 
小天:面来了~~~~~~~~~~~~~~~~~~~~~~~
 
后退
顶部