1

質問が正確かどうかわからないので、状況を説明します。

一致するものがない場合でもデータを取得するために左外部結合を実行する必要がある2つのテーブルを取得しました。whereステートメントの1つの識別を除いて、正常に機能しているクエリを実行しました。

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

今、私は特定のプロジェクトのレコードのみを取得する必要があることに気付きましたが、他のテーブルに一致するものがない場合でも、OUTERJOINからすべての「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 に答える