从SQL Server的三个表中查询数据

4

我有三张表,分别为tbl_monday, tbl_tuesdaytbl_wednesday,包含以下数据:

tbl_monday

id    empid   Plan
---------------------
1     6       Mon_27
2     6       Mon_27
3     6       Mon_27

tbl_tuesday

id    empid   Plan
--------------------
1     6       Tue_28
2     6       Tue_28
3     6       Tue_28     

tbl_wenesday

id  empid     Plan
------------------
1     6       Wed_29
2     6       Wed_29
3     6       Wed_29

有没有简单的方法可以得到这样的结果?
empid    Plan
----------------------
6       Mon_27
6       Tue_28
6       Wed_29

请问您能否提供一下这些表格之间的关系以及这些数据的使用方式的上下文信息?目前看来,这个设计似乎很糟糕,如果没有更多的上下文信息,最合适的答案是无法确定的。 - Daniel Brose
2个回答

5
您可以使用三个表之间的union查询,这将提供来自所有查询的唯一结果:
SELECT empid, [plan] FROM tbl_monday
UNION
SELECT empid, [plan] FROM tbl_tuesday
UNION
SELECT empid, [plan] FROM tbl_wednesday

SQLFiddle


4
@ZoharPeled,你是错误的。正如我上面指出的那样,union运算符(不像union all)提供了唯一的结果 - 不仅在查询之间,而是总体上。请查看我在答案中添加的SQLFiddle以获取证明。 - Mureinik

1

使用union all是一种简单的方法:

select *
from
(
    select top 1 empid, plan
    from tbl_monday
    order by id
) m

union all

select *
from
(
    select top 1 empid, plan
    from tbl_tuesday
    order by id
) t

union all

select *
from
(
    select top 1 empid, plan
    from tbl_Wednesday 
    order by id
) w

尽管如此,您似乎应该重新考虑您的数据库设计。

其实我对数据库设计还很陌生,所以看起来可能不太好。 - Rendeep
我该如何对其进行规范化? - Rendeep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接