首页 > 解决方案 > 在同一个查询中从两个表中加载数据

问题描述

我试图通过更改我的查询命令以在我的 SQL 中包含来自同一数据库中的两个表的数据,并将它们加载到datagrid我的 VB.Net 项目中的相同数据中,从而避免自己更加努力地工作。

我在 Management Studio 中有一个查询 cmd,如下所示:

有效的查询

SELECT        DateAndTime, Millitm, TagIndex, Val
FROM          PD_All_FT
WHERE         (DateAndTime = '2019-01-30 07:59:58.000') AND (Millitm = 597)
ORDER BY      DateAndTime DESC

^搜索我的浮动数据值


双重查询我想工作

但我希望它同时在浮动和字符串 .dbo 中搜索(相同的查询)

在我的脑海中,它看起来像这样:

SELECT        DateAndTime, Millitm, TagIndex, Val
FROM          PD_All_ST & PD_All_ST
WHERE         (DateAndTime = '2019-01-30 07:59:58.000') AND (Millitm = 597)
ORDER BY      DateAndTime DESC

^同时在 PD_All_FT 和 PD_All_ST 中搜索,将数据加载到我的 VB.Net 项目中的同一个 dgv 中。


问题

这甚至可能吗,还是我必须进行两个独立的查询?

标签: sql-server

解决方案


也许您想将基于两个表的数据的搜索组合到单个输出网格中:

SELECT        DateAndTime, Millitm, TagIndex, Val
FROM          PD_All_ST 
WHERE         (DateAndTime = '2019-01-30 07:59:58.000') AND (Millitm = 597)

UNION ALL

SELECT        DateAndTime, Millitm, TagIndex, CAST(Val as VARCHAR(50)) as Val 
FROM          PD_All_FT 
WHERE         (DateAndTime = '2019-01-30 07:59:58.000') AND (Millitm = 597)
ORDER BY      DateAndTime DESC

此外,您可以根据视图的创建选择另一种方法:

CREATE VIEW dbo.myView
AS
SELECT        DateAndTime, Millitm, TagIndex, Val
FROM          PD_All_ST 
UNION ALL    
SELECT        DateAndTime, Millitm, TagIndex, Val
FROM          PD_All_FT 
GO

-- and then simply replace PD_All_FT  with a name of a recently created view:

SELECT        DateAndTime, Millitm, TagIndex, Val
FROM          myView
WHERE         (DateAndTime = '2019-01-30 07:59:58.000') AND (Millitm = 597)

推荐阅读