【问题标题】:Query data from three tables in SQL Server从 SQL Server 中的三个表中查询数据
【发布时间】:2015-10-17 05:49:16
【问题描述】:

我有 3 个名为 tbl_mondaytbl_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

【问题讨论】:

  • 您能否就这些表格之间的关系以及如何使用这些数据提供上下文?它确实看起来像糟糕的设计,如果没有更多的上下文,就无法知道最合适的答案。

标签: sql sql-server select sql-server-2005


【解决方案1】:

您可以在三个表之间使用union 进行查询,这将提供所有查询的唯一结果:

SELECT empid, [plan] FROM tbl_monday
UNION
SELECT empid, [plan] FROM tbl_tuesday
UNION
SELECT empid, [plan] FROM tbl_wednesday

SQLFiddle

【讨论】:

  • @ZoharPeled 你错了。正如我上面提到的,union 运算符(与union all 不同)提供了独特的结果——不仅在查询之间,而且在整个查询之间。请参阅我添加到答案中的 SQLFiddle 以获得证明。
【解决方案2】:

简单的是使用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

虽然看起来你应该重新考虑你的数据库设计。

【讨论】:

  • 实际上是数据库设计的新手,这就是为什么它看起来很糟糕。
  • 我怎样才能标准化这个?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多