【问题标题】:SQL Get matching values from other table and show in main tableSQL 从其他表中获取匹配值并显示在主表中
【发布时间】:2017-05-05 02:36:03
【问题描述】:

我正在尝试在 C# 中执行一些 SQL 以及 Access 数据库。我有两张桌子。主表和副表:

MAIN TABLE
DoubleValue |        |        |        |
----------------------------------------
1,40        |        |        |        |
1,80        |        |        |        |
2,00        |        |        |        |
1,80        |        |        |        |
1,60        |        |        |        |
1,60        |        |        |        |
----------------------------------------

SECOND TABLE
DoubleValue | Points | Weight |
-------------------------------
1,00        | 100    | 2      |
1,20        | 98     | 2      |
1,40        | 96     | 2      |
1,60        | 94     | 2      |
1,80        | 92     | 2      |
2,00        | 90     | 2      |
-------------------------------

我需要根据“双值”列在“第二个表”中找到所有匹配的行。然后对于匹配的行,我想获取“Points”和“Weight”列中的值,并将这两列相乘并创建一个名为“Sum”的列,并将所有三列添加到“MAIN TABLE”:

MAIN TABLE - RESULT/OUTPUT
DoubleValue | Points | Weight | Sum |
-------------------------------------
1,40        | 96     | 2      | 192 |
1,80        | 92     | 2      | 184 |
2,00        | 90     | 2      | 180 |
1,80        | 92     | 2      | 184 |
1,60        | 94     | 2      | 188 |
1,60        | 94     | 2      | 188 |
-------------------------------------

“主表”实际上不需要“物理地”插入新列。如果它们可以像“SELECT Points * Weight AS Sum”那样显示在输出中,我会非常希望它们会在“Sum”显示但实际上并未插入表中的位置产生。但是好的,如果它需要实际插入,那么我会去的。

如何做到这一点?

【问题讨论】:

  • 这看起来像一个非常基本的INNER JOIN。你试过什么?
  • 我确实很难弄清楚该尝试什么。我已经有 15 年没有做任何 SQL 了,所以我不记得如何做所有的 INNER JOINS。我只记得非常非常基本的 SQL,例如 SELECT、UPDATE 和 INSERT。

标签: c# sql ms-access


【解决方案1】:

您正在寻找更简单的INNER JOIN 语句。请注意 Sum 被包装,因为它在大多数 SQL 变体中是一个 保留 词。请尽量避免用这些词命名物品。

SELECT m.DoubleValue 
,      s.Points
,      s.Weight
,      [Sum] = s.Points * s.Weight    

FROM       MainTable    AS m
INNER JOIN SecondTable  AS s     ON m.DoubleValue  = s.DoubleValue 

【讨论】:

  • 好的,感谢您的帮助。现在我知道了这样做的基础知识,但这部分肯定有问题:“[Sum] = s.Points * s.Weight”。至少对我来说,“[Sum]”的标题最终是“Expr 1004”,并且列中的每个值都有“0”。我假设您提出了正确的方法来执行此操作,但由于某种原因出现了问题。
  • 除此之外,“点”和“权重”列被添加到“主表”中,所以这部分进展顺利。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 2019-08-05
  • 2017-05-10
  • 1970-01-01
相关资源
最近更新 更多