我不确定我的问题是否准确,所以我会解释一下情况。
我有两张桌子,我需要做一个左外连接来获取数据,即使没有匹配。我做了一个工作正常的查询,除了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)。
答案 0 :(得分:3)
使用左连接查询,您应该在连接的on子句中的“right”表中过滤行。
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
答案 1 :(得分: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