SQL对表连接进行数据比较

时间:2014-01-30 05:07:49

标签: c# sql database join

我正在使用一个使用数据库的C#应用​​程序。我需要将两张桌子连在一起,但它们之间的联系很奇怪。一个表中包含标识A,B,C等数据的字母,另一个表具有标识类型的字符串值,如“小”或“大”

我需要加入表格,以便第一个表格列中的值与代码“a”链接到另一个表格的列,其值为“small”,值为“b”或“d”链接到另一个表的“大”的价值

使用标准SQL执行此操作的最佳方法是什么。有没有什么方法可以在join语句中有额外的条件,或者最好在where子句中做这样的事情?

谢谢,

-Jake

4 个答案:

答案 0 :(得分:1)

处理此问题的最简单方法是使用一个映射值的中间表。然后,您可以将此表添加到语句中,并使用它将主表连接在一起。

答案 1 :(得分:0)

制作一个案例陈述,将第一张表格中的'小'和b,c,d ...映射为'大',新字段加入表格

答案 2 :(得分:0)

制作中间表或查询。

SELECT *
FROM (
  SELECT CASE col WHEN 'A' THEN 'small'
                  WHEN 'B' THEN 'large'
                  WHEN 'D' THEN 'large'
                  ELSE NULL
         END AS col
   FROM one
) x
JOIN two t
    ON x.col = t.col

http://sqlfiddle.com/#!6/45eb0/1

答案 3 :(得分:0)

根据您的描述,我认为您可以使用公用表表达式来选择所需的值,以及具有A,B,C值的列。然后使用CTE加入第二个表。它将如下所示。

;与A_CTE(列)
AS

   选择column1,columnb,CASE A_B_C_COLUMN当'A'那么'大'时'B'那么'小''C'那么'TINY'结束为ColumnC

从A_CTE JOIN TABLEB中选择* A_CTE.ColumnC = TABLEB.ConditionColumn

如果您可以提供更多详细信息,请尽快为您编写SQL语句。