首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL连接多个表以及多个参数

SQL连接多个表以及多个参数
EN

Stack Overflow用户
提问于 2017-06-24 05:43:35
回答 1查看 103关注 0票数 3

我是一名控制工程师,对SQL的知识非常有限,但我使用AB FactoryTalk、SQL 2012和ReportBuilder3.0进行了一些报告。数据来自PLC,并将数据记录到三个表中

  • 浮台
  • 串表
  • 标签表

标记表保存标记名和"TagIndex“以供参考。浮点数表保存所有数字数据,并有一个"TagIndex“,其数字与标记表中的标记名相匹配。与String表相同的概念,包含字符串,并有一个"TagIndex“,它与标签表中的标记名称相匹配。

我正在构建一个表,该表显示整个数据日志快照,其中包括浮点表和字符串表中的一些数据。两者都是相互关联的,因为它们的日期/时间记录匹配。

我需要将标记表与字符串表和浮点数表相关联,并通过日志日期将String table与Float表关联起来。

使用报表生成器中的查询设计器,我有一个具有以下内容的半工作表

代码语言:javascript
复制
SELECT
    StringTable.DateAndTime AS [StringTable DateAndTime]
    ,FloatTable.DateAndTime AS [FloatTable DateAndTime]
    ,FloatTable.TagIndex AS [FloatTable TagIndex]
    ,FloatTable.Val AS [FloatTable Val]
    ,StringTable.Val AS [StringTable Val]
    ,TagTable.TagIndex AS [TagTable TagIndex]
    ,TagTable.TagName
    ,TagTable.StartEnd
    ,TagTable.TableOrder
    ,TagTable.Label
    ,TagTable.Unit
    ,StringTable.TagIndex AS [StringTable TagIndex]
FROM TagTable
    FULL OUTER JOIN FloatTable
      ON TagTable.TagIndex = FloatTable.TagIndex
    FULL OUTER JOIN StringTable
      ON TagTable.TagIndex = StringTable.TagIndex

代码工作,但与FloatTable和StringTable没有关系。还将最后两行替换为下面的内容,这是一个有效的查询,但没有给出我需要的内容:

代码语言:javascript
复制
FULL OUTER JOIN StringTable
  ON TagTable.TagIndex = StringTable.TagIndex
  AND FloatTable.DateAndTime = StringTable.DateAndTime

数据在表中使用,列作为TagIndex/TagNames,行是DateAndTime。

如何使DateAndTime正确地加入?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-24 06:19:16

在这里,完全外部联接确实是个好主意,但只适用于两个子表。

代码语言:javascript
复制
SELECT
     s.DateAndTime AS [StringTable DateAndTime]
    ,f.DateAndTime AS [FloatTable DateAndTime]
    ,f.TagIndex AS [FloatTable TagIndex]
    ,f.Val AS [FloatTable Val]
    ,s.Val AS [StringTable Val]
    ,t.TagIndex AS [TagTable TagIndex]
    ,t.TagName
    ,t.StartEnd
    ,t.TableOrder
    ,t.Label
    ,t.Unit
    ,s.TagIndex AS [StringTable TagIndex]
FROM FloatTable f
FULL OUTER JOIN StringTable s ON s.TagIndex = f.TagIndex AND s.DateAndTime = f.DateAndTime
INNER JOIN TagTable t ON t.TagIndex IN (s.TagIndex, f.TagIndex);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44733204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档