1

我不确定我的问题是否准确,所以我会解释一下情况。

我有 2 个表,即使没有匹配项,我也需要在其中进行左外连接以获取数据。我做了一个工作正常的查询,除了 where 语句中的一个歧视:

SELECT TableA.Type, SUM(TableB.HreReelles) AS HreReellesTotales, TableB.NoProjet_Short 
FROM TableA 
LEFT OUTER JOIN TableB ON TableA.IDType = TableB.IDType  
WHERE TableA.Categorie = 'Electrique' 
GROUP BY TableB.NoProjet_Short,TableA.Type

现在我意识到我还需要只获取特定项目的记录,但即使另一个表中没有匹配项,也要保留 OUTER JOIN 中的所有“TableA.Type”。如果我只添加“AND”语句,它会将它们从返回的记录中删除。如有必要,我会发布屏幕截图;)。

哦,我需要在完成后将其放入 OleDbCommand 中。

谢谢西蒙

编辑:添加图片。我不需要红色的内容,但我需要包括空单元格在内的其余部分(来自 LEFT OUTER JOIN)。

预期数据

4

2 回答 2

3

对于左连接查询,您应该在连接的 on 子句中过滤“右”表中的行。

SELECT TableA.Type, SUM(TableB.HreReelles) AS HreReellesTotales, TableB.NoProjet_Short 
FROM TableA 
LEFT OUTER JOIN TableB ON TableA.IDType = TableB.IDType  
  AND TableB.ColumnName = 'SomeValue'
WHERE TableA.Categorie = 'Electrique' 
GROUP BY TableB.NoProjet_Short,TableA.Type
于 2013-03-20T16:16:29.080 回答
1

我认为您可能需要走很长的路:

SELECT TableA.Type, SUM(b.HreReelles) AS HreReellesTotales, 
       b.NoProjet_Short 
FROM TableA 
LEFT JOIN (SELECT * FROM TableB 
  WHERE TableB.ColumnName = 'SomeValue') b
ON TableA.IDType = b.IDType  
WHERE TableA.Categorie = 'Electrique' 
GROUP BY b.NoProjet_Short,TableA.Type
于 2013-03-20T18:03:47.877 回答