补充:表2和表3中的id1都是对应表1中的id1
解决方案 »
- 联合查询,迷糊
- sql server 2000与sql server 2005是否可以安装windows 2000 advance的一台机器上?
- mssql case函数问题
- 求一建立SQL数据库的代码!!!!!
- 把EXEC返回的内容存入变量中.
- 全文索引突然出错,报FullTextIndexSize 错误
- group by的问题,请高人赐教
- mssql 按时间分页的问题 按时间分页不准确,按照ID分页没问题,这个是怎么回事呢?求哥哥姐姐帮忙
- [求助]还是关于用户名的问题
- 关于ms sql server中的timestamp字段的一个小问题
- 求助,在线等!希望各位出手!
- [急]为什么出会现拒绝访问的提示?
t1.name1,t2.name2,t3.name3
from
t1 left join t2 on t1.id1=t2.id1
left join t3 on t1.id1=t3.id1
left join
inner join
cross join
用来用去都搞不定
现在的想法是这样的,还没实践,不知道行不行:
建一临时表table4,先连接t1,t2表,得:
t1.name1 t2.name2 t3.name3 temp
-----------------------------------
t1name1 t2name21 0
t1name1 t2name22 0
t1name1 t2name23 0
t1name1 t2name24 0
t1name2 t2name25 0
t1name2 t2name26 0
t1name2 t2name27 0
注:temp用来标识该行是否已被使用,以下步骤有用然后用t3的值更新table4,对于t3.id1=1,把t3.t3name*的值更新到table4中temp值为0、t1.name值为t1name1的t3.nmame列中,并把temp值改为0, t1.name1 t2.name2 t3.name3 temp
-----------------------------------
t1name1 t2name21 t3name31 1
t1name1 t2name22 t3name32 1
t1name1 t2name23 t3name33 1
t1name1 t2name24 0
t1name2 t2name25 t3name34 1
t1name2 t2name26 t3name35 1
t1name2 t2name27 t3name36 1若已无temp为0的,则添加一行 :
(上例中需要得到的结果最后一行是这种情况)
t1.name1 t2.name2 t3.name3 temp
--------------------------------------
t1name2 t3name37 1
最后得到
t1.name1 t2.name2 t3.name3 temp
-----------------------------------
t1name1 t2name21 t3name31 1
t1name1 t2name22 t3name32 1
t1name1 t2name23 t3name33 1
t1name1 t2name24 0
t1name2 t2name25 t3name34 1
t1name2 t2name26 t3name35 1
t1name2 t2name27 t3name36 1
t1name2 t3name37 1
做法很土,理论上应该可以,昨晚边睡边想的,还没实践,现在先上班了
希望有高手教个简单的办法:)
insert into #table4
select ab.id2,ab.uu,name3
from table3 right join
(select table2.id1 as uu,table2.id2 as id2 from table2 where id1=1)ab
on table3.id1=ab.uu and table3.id3=ab.id2 create table #table5(id5 int,id1 int, name5 char(10))
insert into #table5
select ab.uu,ab.id3,ab.name3 from table2 right join
(select table3.id1 as uu,table3.id3 as id3
,table3.name3
from table3 where id1=2)ab
on table2.id2=ab.id3 create table #table6(id6 int,id1 int,name6 char(10))
insert into #table6 select *from #table4
insert into #table6(id6,id1,name6) select id1,id5,name5 from #table5update #table6 set id6=id6+1 from #table6
where id1=2select name1,ab.name2,ab.name3 from table1 right join(
select #table6.id1 as uu,table2.name2,#table6.name6 as name3
from #table6 left join table2
on #table6.id6=table2.id2)ab
on table1.id=ab.uu
*/
execute winer