表加入独特字段

时间:2016-01-11 10:14:21

标签: vb.net join subquery distinct

我遇到的问题是加入两张桌子。一个表包含所有通用数据,第二个表包含已给定特定值的旧字段。下面的示例表有助于澄清我的设置。

表1(通用数据)

ParaIndex   ParaName    ParaDefault
1           Cat         15
2           Fish        8
3           Dog         3

表2(特定数据)

Project    ParaIndex   ParaValue
John       1           6
John       2           7
Alan       3           9

然后,目标是将这些表连接起来以获得单个表:

表3(表'加入'John'的ParaIndex)

ParaName   ParaIndex   ParaValue  ParaDefault
Cat        1           6          15
Fish       2           7          8
Dog        3                      3

因此,表3将返回表1中的所有行,但仅显示ParaValue的值,它们不为空。 E到目前为止,我尝试过的是更改连接类型,不同选择,分组,选择子查询以及其他帖子中提到的建议的组合。

最终目标是在vb.net中将此查询用作表单的标准。

我得到的最接近的是返回表3中的请求数据,但它会排除未请求的行(例如,如果查询是'John',那么它将排除'Alan'标记的参数在这种情况下是3-Dog。)

SELECT t1.ParaName, t1.ParaIndex, t2.ParaValue, t1.ParaDefault
FROM Table1 AS t1LEFT OUTER JOIN Table2 AS t2
ON t1.ParaIndex = t2.ParaIndex
WHERE (((t2.ParaIndex) is null) OR t2.Project = 'John')

1 个答案:

答案 0 :(得分:0)

您必须使用LEFT OUTER JOIN

SELECT t1.ParaName,
       t1.ParaIndex,
       COALESCE(CAST(t2.ParaValue AS VARCHAR(10), '') AS ParaValue,
       t1.ParaDefaule,
FROM dbo.Table1 t1
LEFT OUTER JOIN dbo.Table2 t2
   ON t1.ParaIndex = t2.ParaIndex
WHERE t2.Project = 'John'
ORDER BY t1.ParaIndex