2009-05-12 11 views
1

私は次のクエリを構築しようとしています:亜音速エイリアスクエリ - 方法

`new Select("GTekst = ArrGruppe.Tekst", "GLTekst = ArrGruppeLinie.Tekst") 
.From(ArrGruppeLinie.Schema) 
.InnerJoin(ArrGruppe.IdColumn, ArrGruppeLinie.ArrGruppeIDColumn) 
.Where(ArrDeltager.Columns.Kategori).IsLessThan(20) 
.And("Arrgruppe.Tekst").Like("mytext");` 

それが原因.AND(の欠陥クエリを生成)私は、同じ名前を持つ2つの列の上に取り付けたエイリアスを持っているので - そして、オペレータはこちら:

... AND (ArrGruppe.Tekst LIKE @ArrGruppe.Tekst1 
)',N'@Kategori0 tinyint,@ArrGruppe.Tekst1 varchar(10)',@Kategori0=20,@ArrGruppe.Tekst1='mytext' 

この問題を解決できるものはGoogleでは見つかりませんでした。 ArrGruppe.Tekstの有効なSQLパラメータを生成するためにSubsonicクエリを書く方法を教えてください。

EDIT:問題は2.1最終版から2.2版に更新されました。

答えて

1
new Select("GTekst = ArrGruppe.Tekst", "GLTekst = ArrGruppeLinie.Tekst") 
    .From(ArrGruppeLinie.Schema) 
    .InnerJoin(ArrGruppe.Columns.Id, ArrGruppeLinie.Columns.ArrGruppeID) 
    .Where(ArrDeltager.Columns.Kategori).IsLessThan(20) 
    .And(Arrgruppe.Columns.Tekst).Like("mytext"); 

あなたが(2.2で修正された)、次の問題を打つ可能性があるため亜音速http://code.google.com/p/subsonicproject/downloads/listの最新バージョンにアップグレードしようとしない場合

Googleの問題31 - Expressionが修飾された列名

で正しくフォーマットしません
+0

私は、 "ArrGruppe.Tekst"と "ArrGruppeLinie.Tekst"という一致する列名を持つ2つのテーブルがある状況があります。疑問は、いくつかの有効なSQLを作成するために列名のエイリアスを生成するサブソニッククエリを作成する方法です。同じクエリで、エイリアスを作成した列の1つに基づいてANDフィルタを作成します。 私はあなたのアプローチを試してみました - 上記次を生成します。 とTekstがあいまい列であるため、それらの二つがありますので、無効であるTekst LIKE @ Tekst1 ...。 詳細情報が必要な場合は、もう一度お書き添えください。o) – kerbou

+0

上記のクエリを編集して、あいまいな列名のエラーを修正する必要があります。それがなければ私に知らせてください –

+0

申し訳ありません。次のAND節が生成されます。 ... AND ArrGruppe.Tekst LIKE @ ArrGruppe.Tekst1 パラメータ名にドットを使用できないため無効です。 – kerbou