4

必要な結果のタイプを返す次の Sql クエリがあります。

SELECT b.ID, a.Name, b.Col2, b.COl3
FROM Table1 a
LEFT OUTER JOIN Table2 b on b.Col4 = a.ID AND b.Col5 = 'test'

本質的に、Table2 (b) のデータをリストする一方で、Table1 (a) に等しい行数が必要です。または、条件「test」が Table2 に存在しない場合は NULL が必要です。

私はLLBLGenにかなり慣れていないので、いくつか試してみましたが、うまくいきません。条件が存在する場合、動作させることができます。ただし、要件の変更が発生し、クエリを上記のように書き直さなければならなくなったとき、途方にくれました。

以下は、既存の製品では機能したが、上記のクエリでは機能しなかった古い LLBLGen C# コードです。

LookupTable2Collection table2col = new LookupTable2Collection();

RelationCollection relationships = new RelationCollection();
relationships.Add(LookupTable2Entity.Relations.LookupTable1EntityUsingTable1ID, JoinHint.Left);

IPredicateExpression filter = new PredicateExpression();
filter.Add(new FieldCompareValuePredicate(LookupTable2Fields.Col5, ComparisonOperator.Equal, "test"));

table2col.GetMulti(filter, relationships);

テーブル 1 には 3 つのレコードがあります。条件が存在しないため、表 2 のすべての項目が NULL であっても、3 つのレコードが必要です。何か案は?

4

1 に答える 1

7

次のように、関係結合にフィルターを追加する必要があります。

relationships.Add(LookupTable2Entity.Relations.LookupTable1EntityUsingTable1ID, JoinHint.Left).CustomFilter = new FieldCompareValuePredicate(LookupTable2Fields.Col5, ComparisonOperator.Equal, "test");
于 2009-03-31T22:22:50.207 に答える