Vb.net 表联接不同字段

Vb.net 表联接不同字段,vb.net,join,subquery,distinct,Vb.net,Join,Subquery,Distinct,我遇到的问题是连接两个表。一个表包含所有通用数据,第二个表包含给定特定值的旧字段。下面的示例性表格有助于澄清我的设置 表1一般数据 表2具体数据 然后,目标是联接这些表以获得单个表: 表3“John”的ParaIndex上的表联接 因此,表3将返回表1中的所有行,但只显示ParaValue的值,这些值不为空。E到目前为止,我尝试的是更改联接类型、独特选择、分组方式、选择子查询和其他帖子中提到的建议的组合 最终目标是在VB.NET中使用这个查询作为窗体的PAR。 我得到的最接近的结果是返回表3中请

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

表1一般数据 表2具体数据 然后,目标是联接这些表以获得单个表:

表3“John”的ParaIndex上的表联接 因此,表3将返回表1中的所有行,但只显示ParaValue的值,这些值不为空。E到目前为止,我尝试的是更改联接类型、独特选择、分组方式、选择子查询和其他帖子中提到的建议的组合

最终目标是在VB.NET中使用这个查询作为窗体的PAR。 我得到的最接近的结果是返回表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中选择Table1.ParaIndex、Table1.ParaName、Table1.ParaIndex、Table2.ParaValue从表1中选择DISTINCT Table1.ParaIndex、Table1.ParaName、Table1.ParaDefault、Table2.ParaValue从表1左连接表2到表1.ParaIndex=Table2.ParaIndexexcuse格式,我很难理解它,我尝试了你提出的代码,不得不对它进行修改,以便访问,但它仍然只返回来自t2的列表和来自t1的数据。然而,我想得到t1中的所有字段,不包括t2和t2中已经存在的“John”字段。我使用的代码是:选择t2.Project、t1.ParameterParaName、t1.ParaIndex、Nzt2.ParaValue、Null作为ParaValue、t1.ParaDefault FROM dbo.Table1 t1 INNERLEFT-OUTER JOIN dbo.Table2 t2 ON t1.ParaIndex=t2.ParaIndex,其中t2.Project='John'按t1.ParaIndex排序
Project    ParaIndex   ParaValue
John       1           6
John       2           7
Alan       3           9
ParaName   ParaIndex   ParaValue  ParaDefault
Cat        1           6          15
Fish       2           7          8
Dog        3                      3
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')
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