SQL Server数据库 多表union的问题

有一个表叫做fold 里面的属性有
fname nvarchar(50) Unchecked
creid nchar(10) Unchecked
cretime datetime Unchecked
lamoid nchar(10) Checked
lamotime datetime Checked
mostate bit Unchecked
openor bit Unchecked
还有一个表
uinfo
如下:
uid nchar(10) Unchecked
uname nchar(10) Unchecked
email nvarchar(50) Checked
room int Unchecked
phone nvarchar(50) Checked
sex bit Unchecked
age int Checked
depid int Checked
现在需要把fold与uinfo做一个join得到creid=uid对应的uname还要再做一个join得到lamoid=uid对应的uname
怎么写呢?
错了,是多表join的问题…………不是union不好意思啊……

第1个回答  2011-08-30
你的需求并不是一般所说的多表查询,一般讲多表查询通常是指多表连接查询,或者是嵌套查询。其实你的需求只要将各个查询结果进行联合就可以了。
select * from A where name like '%a%'
union all
select * from B where name like '%a%'
union all
select * from C where name like '%a%'
union all
select * from D where name like '%a%'
追问

要在一条记录里面,和fname一起显示

第2个回答  2011-08-30
果然想的都一样!同意楼上的想法。
select u1.uname from fold f1 left join uinfo u1 on f1.creid=u1.uid
union
select u2.uname from fold f2 left join uinfo u2 on f2.lamoid=u2.uid追问

如果是要在一条记录解决怎么办……就是说lamoname和crename都要显示在一行里面

追答

lamoname和crename 这两个字段是哪里的?
显示为一行就是 select lamoname,crename from 表名 where。。。。。。

第3个回答  2011-08-30
join两次uinfo:
select c.*, d.uname as lamoname from
(select a.*, b.uname as crename from fold as a left join uinfo as b on a.creid = b.uid) as c
left join uinfo as d on c.lamoid = d.uid本回答被提问者采纳
第4个回答  2011-08-30
Select * from fold
left join uinfo on uid=cid and and lamoid=uid
第5个回答  2011-08-30
SELECT uname FROM fold LEFT JOIN uinfo ON creid=uid
UNION
SELECT uname FROM fold LEFT JOIN uinfo ON lamoid=uid追问

如果是要在一条记录解决怎么办……就是说lamoname和crename都要显示在一行里面

追答

select case when sing ="A" then uname end as lamoname ,case when sing='B' then uname end as crename from (
SELECT uname,"A" as sing FROM fold LEFT JOIN uinfo ON creid=uid
UNION
SELECT uname,"B" as sing FROM fold LEFT JOIN uinfo ON lamoid=uid
) tab1

sql server 中union的用法
首先,UNION在SQL Server中用于合并两个或更多SELECT语句的结果集,但关键点在于这些查询的列数和数据类型必须完全一致。尝试将两个分别查询不同表的结果合并时,若列数或类型不匹配,如一个查询的OrderTime列是日期类型,另一个是字符类型,会导致错误提示。解决这个问题的方法是使用CONVERT函数将数据类型...

SQL Server数据库 多表union的问题
你的需求并不是一般所说的多表查询,一般讲多表查询通常是指多表连接查询,或者是嵌套查询。其实你的需求只要将各个查询结果进行联合就可以了。select * from A where name like '%a%'union all select * from B where name like '%a%'union all select * from C where name like '%a%'uni...

sqlserver中union的用法
在SQL Server中,UNION操作用于合并两个或多个SELECT语句的结果集。它会自动删除重复的记录,只返回唯一的记录。使用UNION可以方便地从一个或多个表中检索数据,并将这些数据组合成一个单一的结果集。以下是关于UNION的 1. UNION的基本语法 使用UNION时,需要确保各个SELECT语句具有相同数量的列,并且对应...

sql server 中union的用法
1、首先来准备两个select查询,分别查询一个表。2、用Union将这两个查询连接在一起并且运行SQL语句,出现下图的错误提示,因为Union连接的两个查询,列的数目必须一样。3、进行修改,让其列的数目一样,还是报错,因为第二个查询中OrderTime是日期类型,而与其对应的第一个查询相应列是字符类型,类型不...

sqlserver2005 查询有union all组成的表为什么union中的排序不起...
因为union all是将来年各个查询的结果集拼接在一起,你如果在其中的一个查询中order by,没记错的话会语法错误,假设没语法错误的话,只是对结果集的一部分进行排序,不能达到对整个结果集进行排序的效果,所以是没有意义的 如果你想实现对整个结果集进行排序的话,可以在外面order by :select 你想要...

sql server 中union的用法?
union all 指定在合并结果集后保留重复项,打个比喻吧 比如A表的数据是 A{ 1,4,5,9} B{2,3,4,5} 那我执行此语句 select * from A union select * from B 那结果是{1,2,3,4,5,9} 如果执行select * from A union all select * from B 结果是{1,2,3,4,4,5,5,9} 你看...

SQL SERVER UNION的问题
就是union all中不能用排序 所以你上边这个要改也不是那么太容易,不知道你数据量大不大 不过可以尝试这么用一下 select a.aaaa,a.bbbb from (SELECT 'date1' as date_name,TBL1.aaaa as aaaa,TBL2.bbbb as bbbb FROM T_TABLE1 TBL1 INNER JOIN T_TABLE2 TBL2 ON TBL1.ID = TBL2.ID...

sql server查询多表记录,后面一行增加合计?
可以使用 UNION ALL 和 GROUP BY 语句实现查询多表记录并在后面一行增加合计。以下是一个示例 SQL 查询语句:SELECT t1.id, t1.name, t1.amount FROM table1 t1 UNION ALL SELECT t2.id, t2.name, t2.amount FROM table2 t2 GROUP BY t2.id, t2.name, t2.amount WITH ROLLUP;在此查询...

sql server 语句如何将3个表合并成一个表?
先说一下我的思路:首选你把表1,表2,表3中的数据都合并在一起表中,使用union all合并在一起。先不要管姓名是否会重复。但是在执行合并的时候,需要对每一个待合并的数据,打上一个标签,代表这个是哪个表中来的数据,这个标签最后用于区分同一个人的不同的成绩是分别是多少,不能因为合并在一...

sql server数据库中两个表合并除掉重复?
select * from table1 Union select * from table1 注:Union ALL不会过滤重复的 而Union相当于连表后在用distinct 会很慢

相似回答
大家正在搜