3

サブソニックで次のことが可能です。

SELECT * FROM TABLE1

WHERE 列 1 > 列 2 または列 1 < 列 3

私が見たすべての例では、where 句に値を渡すことを想定しています。ビューを作成せずにこれを実行しようとしています。

ありがとう

4

4 に答える 4

2

それが私たちのスタックにある場合、私はそれを見つけることができません:)。ただし、追加するのは良いことです:)。今のところ、インライン クエリを使用して、記述したステートメントを単純に実行できます (単純な SQL が必要です)。ダサいのはわかってるけど…

リック - あなたがそれを機能させた場合、私はどのように興味があります. 「Col2」はタイプに解析されようとし、クエリは失敗します。

于 2009-04-04T19:10:35.543 に答える
0

SubSonic 2.1/2.2 を使用していて、ソースにアクセスできる場合は、次を適用できます。

SubSonic/SqlQuery/Constraint.cs
(新しいプロパティを追加)

public bool ParameterIsTableColumn
{
    get { return ParameterValue is TableSchema.TableColumn ;  }
}

SubSonic/SqlQuery/SqlQuery.cs
(SetConstraintParams メソッド内)

foreach(Constraint c in qry.Constraints)
{
    if (c.ConstructionFragment == "##" || c.ParameterIsTableColumn)
        continue;

SubSonic/SqlQuery/SqlGenerators/ANSISqlGenerator.cs
(BuildConstraintSQL メソッド内)

//add this at the top of the method
int currentConstraintIndex = query.Constraints.IndexOf(c);

///the statement 'c.ParameterName = ' occurs four times in this method
///use this line the first three times, and a slight variation of it on the fourth
c.ParameterName = (c.ParameterIsTableColumn ? ((TableSchema.TableColumn)c.ParameterValue).QualifiedName : String.Concat(col.ParameterName, currentConstraintIndex));
于 2011-01-01T14:06:28.640 に答える
0

この機能は現在のバージョンにはないようですが、次のリリースのコードにサブミットされています。

于 2008-10-29T04:09:00.570 に答える
-1

はい、そうです。

Dim TableList As Generic.List(Of Database.Table1) = _
 New SubSonic.Select().From("Table1"). _
 Where("Col1").IsGreaterThan("Col2"). _
 Or("Col1").IsLessThan("Col3").ExecuteTypedList(Of Database.Table1)()
于 2009-04-04T10:49:11.350 に答える